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;ifor)(inti=0;ifor)(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;