Java 数组错误--won';t随机生成的数字的输出列表
我正在学习Java初学者课程,学习数组。我的任务是在用户输入的两个值之间生成指定数量的随机整数 这是我的代码:Java 数组错误--won';t随机生成的数字的输出列表,java,arrays,random,Java,Arrays,Random,我正在学习Java初学者课程,学习数组。我的任务是在用户输入的两个值之间生成指定数量的随机整数 这是我的代码: // Variables int amount,ur,lr,range; System.out.println("Enter the amount of random numbers to generate::"); amount = Integer.parseInt(myInput.readLine()); System.out.print
// Variables
int amount,ur,lr,range;
System.out.println("Enter the amount of random numbers to generate::");
amount = Integer.parseInt(myInput.readLine());
System.out.println("\nEenter the upper range:");
ur = Integer.parseInt(myInput.readLine());
System.out.println("\nEnter the lower range:");
lr = Integer.parseInt(myInput.readLine());
// Create a new array that holds up to user inputted amount of variables
int[] generate = new int[amount];
// Create a range of numbers the array can randomly select as its value,
// given the user's input of the lowest and highest values available to be selected
range = (int)(Math.random() * ur) +lr;
System.out.println("\nGENERATED NUMBERS");
System.out.println("=================");
// Loop to print randomized numbers up to the amount the user inputted
for (int n=0; n < generate.length; n++){
// Give the array the value of the range
generate[amount] = range;
// Output [amount] variables
System.out.println(generate[amount]);
}
如果有人能解释为什么会发生这种情况/这意味着什么,以及如何修复,那将很有帮助。异常是由于
generate[amount] = range;
System.out.println(generate[amount]);
这应该是
generate[n] = range;
System.out.println(generate[n]);
这是因为您的数组有一个大小amount
,所以它从位置0变为amount-1,因此您不能使用或分配来生成[amount]
此外,您应该每次生成
范围
数字,因为这只是一个随机数。所以range=(int)(Math.random()*ur)+lr
应该在循环中,通过一个变量,amount
生成数组,该变量的值在用户输入初始设置后不会改变。再想一想如何引用数组元素,您可能会明白为什么这样做行不通。3件需要更正的事情:
0
到lengtOfArray-1
,因此对于10个元素的数组,最后一个元素将位于数组[9]
下。您永远不想使用类似于数组[sizeOfArray]=…
的东西,因为它将是一个非常大的数字Math.random()
永远不会返回1(它将返回从0到几乎1的值),因此请重新考虑您的随机化公式for
循环之前随机生成的一个数字填充数组。我相信您希望将其移动到for循环中,以便在数组中获得更多随机数我建议您不要使用Math.Random(),而是创建一个实际的随机对象,因为您将多次生成该数字
Random randomNumber = new Random();
然后在你的循环中,你做上面其他评论所建议的事情
for(int n=0;n<generate.length;n++)
{
range = lr +randomNumber.nextInt(ur+1);
generate[n] = range;
System.out.println(generate[n]);
}
对于(int n=0;nDude,如果你给他们答案,而不是帮助他们发现自己做错了什么,那么他们将如何真正学到任何东西?说得很好..添加了更多解释感谢进一步的解释--这有助于澄清问题。谢谢,我不得不仔细考虑,但我理解。
for(int n=0;n<generate.length;n++)
{
range = lr +randomNumber.nextInt(ur+1);
generate[n] = range;
System.out.println(generate[n]);
}