目前学习 Java 作为一种爱好,并正在制作小型游戏项目来强化这些概念。因此,对于这个,我创建了一种方法来创建对象数组,在本例中为“计算机”对象。我这样做是因为我希望用户在启动时决定他们想要与多少个计算机对手对战,而不是对一定数量的计算机对手进行硬编码。现在我想为每个 Computer 对象分配和检索一个值。例如计算机名称、赌注金额和掷骰子猜测。
public class Computer {
static int bet;
static int guess;
int cash;
static Computer[] c;
public static void create(int numComps) {
c = new Computer[numComps];
for (int i = 0; i < numComps; i++) {
c[i] = new Computer();
c[i].cash = Game.startCash;
c[i].bet = bet();
c[i].guess = guess();
c[i].display();
}
}
public static int bet() {
bet = Rng.rand(Game.startCash / 50) * 50;
return bet;
}
public static int guess() {
guess = Dice.roll();
return guess;
}
public void display() {
String name = "Computer ";
System.out.println("My name is " + name + " i bet " + bet + " and guess " + guess);
}
}
当我执行 Computer.create(5) 时,我得到
My name is Computer i bet 150 and guess 9
My name is Computer i bet 50 and guess 3
My name is Computer i bet 450 and guess 11
My name is Computer i bet 250 and guess 11
My name is Computer i bet 50 and guess 10
这个输出看起来可以工作,但我不认为我走在正确的轨道上。对于名称,我希望语法类似于 name = "Computer "+ c[i]。结果是“计算机 1”、“计算机 2”、“计算机 3”等,不知道如何正确执行此操作。并将单独的赌注和猜测分配给每个单独的对象。现在我认为它只是显示一个随机数,而不是将该值分配给特定对象。
最佳答案
bet
和 guess
成员变量不应是静态的。
要显示 id,您可以添加一个新的 int
成员变量,在循环中初始化每台计算机时将其设置为 i
,然后更新 >display()
方法来打印它。
public class Computer {
int id;
int bet;
int guess;
int cash;
static Computer[] c;
public static void create(int numComps) {
c = new Computer[numComps];
for (int i = 0; i < numComps; i++) {
c[i] = new Computer();
c[i].id = i;
c[i].cash = Game.startCash;
c[i].bet = bet();
c[i].guess = guess();
c[i].display();
}
}
public static int bet() {
return Rng.rand(Game.startCash / 50) * 50;
}
public static int guess() {
return Dice.roll();
}
public void display() {
String name = "Computer ";
System.out.println("My name is " + name + id + " bet " + bet + " and guess " + guess);
}
}
关于java - 如何为数组中创建的对象分配和获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57454868/