【问题标题】:int changing values in nested loops [closed]int 在嵌套循环中更改值
【发布时间】:2021-10-01 10:23:44
【问题描述】:

我正在尝试创建一个 Lottery 游戏,其中此方法会打印玩家的姓名以及与 Lottery 数组相同的 int 数,而 somme 是他们赢得的金额。 当我运行程序来检查谁赢得了比赛时,g 值只会随着玩家编号增加 1。例如,如果我创建了 2 个玩家,并且在第一个中我输入了所有正确的数字,而在第二个中输入了所有错误的数字,我会得到 player1 我只有 1 个正确答案和 number2 2 个正确答案。

public void checkWinner() {

    double somme;
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < array.length; j++) {
            for (int k = 0; k < array.length; k++) {
                if (Joueur[i].getArray()[j] == gridLoto()[k]) {
                    g++;
                }
            }
        }
        if (g == 1) {
            somme = (double)mise / 32;
        System.out.println("Bravo " + Joueur[i].getNom() + ", vous avez " + g
                    + " nombre en commun avec la grille du loto et vous avez donc remporté " + somme + " €");
        }
        . 
        .//else if with g=2 to 4 here
        .
        else if (g == 5) {
            somme = (double)mise / 2;
        System.out.println("Bravo " + Joueur[i].getNom() + ", vous avez " + g
                    + " nombre en commun avec la grille du loto et vous avez donc remporté " + somme + " €");
        }
}

【问题讨论】:

  • g 在哪里(哪一行)被初始化?不应该为每个新的i 重置它吗?

标签: java arrays methods


【解决方案1】:

我认为主要问题在于变量g 的声明方式。我相信它应该在第一个循环开始时声明为 0。

还有其他可以改进的地方。您不需要 5 个单独的 if 语句来检查选择了多少正确数字。您可以在一行中完成: System.out.println("Bravo " + Joueur[i].getNom() + ", vous avez " + g + " nombre en commun avec la grille du loto et vous avez donc remporté " + CalculateSomme(g) + " €"); ,在哪里 double CalculateSomme (int g) 将保存计算总和的逻辑。

您可以做的另一个主要改进是将正确数字和猜测的数组存储为 Set,然后使用 Set 类的 retainAll 方法。

【讨论】:

    猜你喜欢
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多