Java:While循环和数组递增

Java:While循环和数组递增,java,Java,我希望程序在循环的每次迭代中不断增加局数。 当我运行程序时,它正在这样做,但是它显示了不正确的值 例如: 你滚了…4 到目前为止,你这一局的总数是6局 第二行应该显示“…到目前为止是4” 这是我目前掌握的代码: import java.util.Random; import javax.swing.*; public class shortSix { public static void main(String[] args) { diceGame(); }//END

我希望程序在循环的每次迭代中不断增加局数。 当我运行程序时,它正在这样做,但是它显示了不正确的值

例如: 你滚了…4 到目前为止,你这一局的总数是6局

第二行应该显示“…到目前为止是4”

这是我目前掌握的代码:

import java.util.Random;
import javax.swing.*;

public class shortSix {

    public static void main(String[] args) {
        diceGame();
}//ENDS MAIN
    public static void diceGame()
    {
        final int[] innings = new int[1];
        innings[0] = 0;

        Random dice = new Random();
        int diceRoll = dice.nextInt(6) + 1;

        while (diceRoll != 5)
        {
            System.out.println("You rolled..." + diceRoll);
            diceRoll = dice.nextInt(6) + 1;
            innings[0] =+ diceRoll;
            System.out.println("Your total for this innings so far is " + innings[0]);

            String userDeclare = JOptionPane.showInputDialog(null, "Do you wish to declare?");
            if (userDeclare.equals("yes"))
            {
                System.exit(0);
            }

        }
    }//ENDS diceGame
}//ENDS class shortSix

问题在于,在第一次滚动之后,您没有更新数组记录。您得到了
int diceRoll=…
,然后再次将随机值赋给变量,并在第二次掷骰后添加分数。第一个结果被忽略。你所要做的就是改变

diceRoll = dice.nextInt(6) + 1;
innings[0] =+ diceRoll;

你打电话

diceRoll = dice.nextInt(6) + 1;
印刷前

 System.out.println("Your total for this innings so far is " + innings[0]);

这导致产生一个新的随机数,这就是问题所在。

有两个问题:

  • =+而不是+=在第二次打印之前
  • 操作顺序很奇怪。首先打印当前值,然后更新它,然后增加计数器并打印摘要。也许你想移动骰子滚动=骰子。。。第二次打印之后

  • 为什么要定义
    innings
    final
    ?我应该使用final变量来存储这个问题的值
    =+
    innings[0]=+dicerll
    中的
    =+
    的目的是什么?啊,这很有意义。我现在已经改了,效果很好。我会把这个标记为接受的答案,但是我还要再等7分钟。我改变了顺序,并将=+修改为+=
     System.out.println("Your total for this innings so far is " + innings[0]);