Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:线程“中出现异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException_Java_Arrays - Fatal编程技术网

错误:线程“中出现异常”;“主要”;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++;
    }
}