Am接收错误Am接收线程中的错误异常;“主要”;JAVA下面是完整错误

Am接收错误Am接收线程中的错误异常;“主要”;JAVA下面是完整错误,java,Java,我收到标题中的错误,不知道它意味着什么/如何修复它 程序应该有一个由100个1-100之间的随机数组成的数组,并将该数组中所有可被4整除的数组成一个数组,然后列出它们 public class JavaProgram{ public static void main (String [] args){ int [] hundredNumbers = new int [100]; for ( int i=0; i <hundredNumbers.le

我收到标题中的错误,不知道它意味着什么/如何修复它

程序应该有一个由100个1-100之间的随机数组成的数组,并将该数组中所有可被4整除的数组成一个数组,然后列出它们

public class JavaProgram{
    public static void main (String [] args){
        int [] hundredNumbers = new int [100];

        for ( int i=0; i <hundredNumbers.length; i++ )
            hundredNumbers[i] = (int) Math.random() * 100;

        int [] multiplesOfFour = new int [100];

        for ( int i=0; i<hundredNumbers.length; i++)
            multiplesOfFour[i] = hundredNumbers[i];

        getEvenMultiples(multiplesOfFour);

        for ( int i=0; i < multiplesOfFour.length; i++ )
            System.out.print (multiplesOfFour[i] + " ");
    }

    public static int[] getEvenMultiples(int[] x){

        int result [] = {};
        int count = 0;
        for (int i = 0; i < x.length ; i++){

            if ( x[i] % 4 == 0 ){
                result = new int [++count];
                result [count] = x[i];
            }
        }
        return result;
    }

}
公共类JavaProgram{
公共静态void main(字符串[]args){
整数[]百位数=新整数[100];

对于(int i=0;i而言,问题在于getEvenMultiples函数中的结果数组

使用count(数组的长度)作为索引,由于长度总是大于最大索引,因此会出现此错误。例如,如果数组的长度为2,则只能使用索引0和1。因此,实际上可以执行类似“result[count-1]=x[i];”

您遇到的另一个问题是,在执行“result=new int[++count];”时,始终会删除孔阵列。实际上,您希望使用类似于
ArrayList
()的列表。在这里,您可以找到有关如何使用
ArrayList
的信息:


啊,你从来不在主函数中使用getEvenMultiples函数的结果。

我在代码中添加了getEvenMultiples函数和“result[count-1]=x[I];”。以及如何避免每次都删除整个数组。这是一个问题吗?是的,我应该怎么做才能“每次都删除整个数组?”result=new int[++count];“”,因为我还没有学习ArrayList的内容,我添加了一个指向解释如何使用ArrayList的页面的链接。另一个选项是在函数开头将结果数组设置为与输入数组一样大,而不是在输出结果时仅使用非0的数字。(当然,只能在getEvenMultiples函数的开头创建数组)
getEvenMultiples
返回一个数组,但您没有处理调用该数组的结果,因此即使您修复了该方法中的错误,您的代码也会打印错误的数组。您应该始终使用大括号来表示
while
if
switch
结构。