错误:线程“中出现异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException
我需要有关此错误的帮助:错误:线程“中出现异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException,java,arrays,Java,Arrays,我需要有关此错误的帮助: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 54 at Main.oddSort(Main.java:44) at Main.main(Main.java:19) 我知道发生此错误是因为我试图在数组中分配过多的值,对吗?我只是不知道如何修复它,也不知道为什么我所做的是错误的 分配是生成100个随机数,并调用两个不同的函数,一个接一个地将奇数和偶数分配到两个不同
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 54
at Main.oddSort(Main.java:44)
at Main.main(Main.java:19)
我知道发生此错误是因为我试图在数组中分配过多的值,对吗?我只是不知道如何修复它,也不知道为什么我所做的是错误的 分配是生成100个随机数,并调用两个不同的函数,一个接一个地将奇数和偶数分配到两个不同的数组中并显示它们 以下是给我带来麻烦的部分:
public static int[] oddSort ( int input[] )
{
int amountOfOdd = 0;
int j = 0;
for(int i = 0; i < input.length; i++)
{
if (input[i] % 2 != 0)
amountOfOdd++;
}
int[] odd = new int[amountOfOdd];
for(int i = 0; i <= 99; i++)
{
if (input[i] % 2 != 0)
/*it's this line specifically that doesn't work, according to the debugger*/
odd[j] = input[i];
j++;
}
return odd;
}
公共静态int[]oddSort(int输入[])
{
int amountofdd=0;
int j=0;
for(int i=0;i 对于(int i=0;i异常的原因是您没有将括号放在if
条件的主体周围。应如下所示:
for(int i = 0; i <= 99; i++)
{
if (input[i] % 2 != 0){
odd[j] = input[i];
j++;
}
}
for(int i=0;我注意到了这一点。这就是为什么通常认为最好使用大括号,即使当前只包含一行代码,因为随着代码的增长,最终会出现此类错误。“出现此错误的原因是我试图在数组中分配太多正确的值。”-不完全是,它意味着“…已使用非法索引访问数组。索引为负数或大于或等于数组大小。”请参阅。
for(int i = 0; i <= 99; i++)
{
if (input[i] % 2 != 0){
odd[j] = input[i];
j++;
}
}