我正在尝试创建一个程序来创建数字1到100的数组,然后将它们随机化。到目前为止,我有这个,但不知道下一步该做什么:
public class Random100Array
{
public static void main(String args[])
{
{
int[] nums = new int[100];
char current;
int a;
for (int i = 0; i <= nums.length; i++) {
nums[i] = i + 1;
}
for (int i1 = 0; i1 <=nums.length; i1++) {
double random = (Math.random() * 100) + 1;
}
}
}
}
此外,这不是家庭作业。我是学生,我目前正在寒假里。由于某种原因,这个程序给了我这个输出。我做错了什么?
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
at Random100Array.main(Random100Array.java:11)
答案 0 :(得分:2)
在for循环中使用<
代替<=
。
答案 1 :(得分:1)
初始化长度为100的数组意味着,索引范围为0到99,因此您不会有索引100,这就是您收到此异常的原因。 nums.length
将为100(因为您使用100初始化长度。基本上,您的for循环范围从0到100(这是101个num),这是超出范围的。
在for循环
中使用<
代替<=
对数组进行混乱,尝试这样的事情: https://stackoverflow.com/a/1520212/995320
答案 2 :(得分:1)
首先,您应该照顾其他答案中提到的for循环条件。
然后,为了改组您的输入数组,您可以使用以下代码:
import java.util.Random;
public class Program {
public static void main(String[] args)
{
int[] nums = new int[100];
for(int i = 0; i < nums.length; ++i)
{
nums[i] = i + 1;
}
Random generator = new Random();
for(int i = 0; i < nums.length; ++i)
{
int j = generator.nextInt(nums.length - i);
int tmp = nums[nums.length - 1 - i];
nums[nums.length - 1 - i] = nums[j];
nums[j] = tmp;
}
}
}
答案 3 :(得分:0)
你需要使用&lt;而不是&lt; =
此外,您可以使用try catch来转义异常,但这不会被视为良好做法