java - 如何正确更新对象数组中的对象变量

标签 java arrays object variables

每次该程序循环时,它都会将 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方法中,您应该调用betdisplay,但只调用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/

相关文章:

java - 使用 Twitter4j 收集带有地理标记的推文

c++ - 找到与给定数字相乘的数字的有效方法

javascript - 从键值为空数组的JS对象中移除

javascript - 高级对象排序

java - 如何通过 Java 中的套接字获取错误流?

java - 使用二进制搜索在正确的索引处打开数组中的空间

arrays - xsl 遍历字母表

ios - Swift - 根据阿拉伯组合字符拆分文本

javascript - 如何比较和匹配两个不同对象的对象键?

java - 文件比较 - 内容可能无序