每次该程序循环时,它都会将 cash 变量重置回 500。我如何最初将其设置为 500,减去赌注,然后让它在下一次迭代时记住该值?我的输出例如:
Computer 1 bets: $50 I now have: $450 //
Computer 2 bets: $50 I now have: $450 //these are right
Computer 3 bets: $50 I now have: $450 //
Computer 1 bets: $50 I now have: $450 //
Computer 2 bets: $50 I now have: $450 //now should have $400
Computer 3 bets: $50 I now have: $450 //
Computer 1 bets: $50 I now have: $450 //
Computer 2 bets: $50 I now have: $450 //now should have $350
Computer 3 bets: $50 I now have: $450 //
我的代码:
public class Computer {
private int id;
private int bet;
private int cash = 500;
private 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 + 1;
c[i].bet = 50;
c[i].cash -= c[i].bet;
c[i].display();
}
}
private void display() {
String name = "Computer " + id;
System.out.println(name + " bets: $" + bet + " I now have: $" + cash);
}
public static void main(String[] args) {
int i = 0;
do {
create(3);
System.out.println();
i++;
} while (i < 3);
}
}
最佳答案
在循环中,您正在调用create
,但从逻辑上讲,create
应该只调用一次,因为它会创建新的计算机对象。另外,create
并没有按照它所说的去做。它不仅创建计算机对象,还让它们下注并显示它们。 bet
应该是一个单独的方法,并且 create
根本不应该调用 display
:
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 + 1;
c[i].bet = 50;
}
}
public void bet() {
cash -= bet;
}
在main
方法中,您应该调用bet
和display
,但只调用create
一次:
public static void main(String[] args) {
create(3);
int i = 0;
do {
for (int j = 0 ; j < 3 ; j++) {
c[j].bet();
c[j].display();
}
System.out.println();
i++;
} while (i < 3);
}
关于java - 如何正确更新对象数组中的对象变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57702541/