Java 对于设置数组值时导致ArrayIndexOutOfBoundsException的循环

Java 对于设置数组值时导致ArrayIndexOutOfBoundsException的循环,java,arrays,Java,Arrays,我正在研究向数组中添加一个随机数。我首先创建一个大小可变的数组 String diceAmount = JOptionPane.showInputDialog(null, "How Many Die Would You Like To Roll Today?"); return x = Integer.parseInt(diceAmount); int[] diceRoll = new int[x]; 然后我尝试用随机数填充数组: in

我正在研究向数组中添加一个随机数。我首先创建一个大小可变的数组

    String diceAmount = JOptionPane.showInputDialog(null,
            "How Many Die Would You Like To Roll Today?");
    return x = Integer.parseInt(diceAmount);

    int[] diceRoll = new int[x];
然后我尝试用随机数填充数组:

    int z = ran.nextInt(5) + 1;
            for (int i = 0; i <= x; i++)
                diceRoll[x] = z;
intz=ran.nextInt(5)+1;
例如:(inti=0;i
for)(inti=0;i
for)(inti=0;i也许值得一提(在路易斯的答案之上):

  • x=6
  • i从0开始
  • 掷骰子的长度=6
    ,因为
    int[]掷骰子=新的int[x]
i也许值得一提(在路易斯的答案之上):

  • x=6
  • i从0开始
  • 掷骰子的长度=6
    ,因为
    int[]掷骰子=新的int[x]

i记住你的数组长度是x,因此如果我有一个大小为10的数组,并且使用数组[10],它将通过一个超出边界的索引,因为数组从0开始,而不是从1开始。因此在循环中,你应该使用i作为索引,并且在0和x-1之间

改变

        for (int i = 0; i <= x; i++)
            diceRoll[x] = z;


请记住,数组长度是x,因此如果我有一个大小为10的数组,并且使用数组[10],它将通过一个超出边界的索引,因为数组从0开始,而不是从1开始。因此在循环中,你应该使用I作为索引,并且在0和x-1之间

改变

        for (int i = 0; i <= x; i++)
            diceRoll[x] = z;


试着打印出骰子数组的大小,如果它是0,那么很明显你会越界。如果可以,那么可能需要更多的代码。试着打印出骰子数组的大小,如果它是0,那么显然你会越界。如果可以,那么可能需要更多的代码。
diceroll[x]
应该是
diceroll[i]
掷骰子[x]
应该是
掷骰子[i]
。事实上,普通新手错误的确,普通新手错误感谢这一点,效果非常好。还有一个问题,我将在actionEvent中将数组元素相加并输出总和。但是,当我再次掷骰子时,它会将新的数量添加到旧的数量中。我如何重置数组中的值以重新分配?我问问题是你的数组保存了值,但是在你加上新的总数之前,你的总和没有重置。请确保在你重新添加数组值之前,你将总和设置为0。太棒了,非常感谢。我意识到我需要在另一个actionEvent中将总和重置为O。谢谢AgainHanks,效果很好。还有一个问题,然后,我在actionEvent中将数组元素添加到一起并输出总和。但是,当我再次掷骰子时,它会将新的数量添加到旧的数量中。我如何重置数组中要重新分配的值?我怀疑问题在于数组是否保存了值,而是在添加新的总数之前,您的总和没有重置。请确认在添加数组值之前,确实已将总和设置为0。太棒了,非常感谢。我意识到我需要在另一个actionEvent中将总和重置为O。再次感谢
        for (int i = 0; i <= x; i++)
            diceRoll[x] = z;
        for (int i = 0; i < x; i++)
            diceRoll[i] = z;
diceRoll[i] = z; 
diceRoll[i] = ran.nextInt(5) + 1;