从不同的数组填充数组时的JAVA程序错误

时间:2015-12-05 14:21:32

标签: java arrays list int populate

当来自inputList的人口oddList,evenList和negativeList时,程序只用一个int填充它,而不是从inputList数组中填充所有相应的int。输出应该是每个数组的列表,其数字对应于其标题。这些数字由用户输入到inputList数组中,然后从那里确定它是奇数,偶数还是负数,然后填充相应的数组。 I.E. evenList甚至用inputList填充。

公共类ProjectTenOne {

public static void main(String[] args)
{
    int[] inputList = new int[10];
    int[] oddList = null;
    int[] evenList = null;
    int[] negativeList = null;
    int evenCount = 0;
    int oddCount  = 0;
    int negCount  = 0;


    Scanner input = new Scanner(System.in);

    //System.out.println("Enter any ten integers: ");

    for(int list = 0; list < inputList.length; list++)
    {
        System.out.println("Enter any " + (inputList.length - list) +  " integers: ");
        inputList[list] = input.nextInt();

    }
    System.out.println();
    System.out.println("The numbers you entered: ");

    for(int in = 0; in < inputList.length; in++)
    {
        System.out.println(inputList[in]);
    }


    for(int ls = 0; ls< inputList.length; ls++)
    {
        if(inputList[ls] % 2 == 0)
        {
            evenCount = evenCount +1;
        }
        if(inputList[ls] % 2 != 0)
        {
            oddCount = oddCount +1;
        }
        if(inputList[ls] < 0)
        {
            negCount = negCount +1;
        }
    }

    evenList     = new int[evenCount];
    oddList      = new int[oddCount];
    negativeList = new int[negCount];

    for(int l = 0; l < inputList.length; l++)
    {
        if((inputList[l] % 2) == 0)
        {   
            for(int j = 0; j < evenList.length; j++)
            {
                evenList[j] = inputList[l];

            }
        }
        if((inputList[l] % 2) != 0)
        {
            for(int k = 0; k < oddList.length; k++)
            {
                oddList[k] = inputList[l];

            }
        }
        if(inputList[l] < 0)
        {
            for(int h = 0; h < negativeList.length; h++)
            {
                negativeList[h] = inputList[l];

            }
        }
    }

    System.out.println("The ODD List is: ");
    for(int i = 0; i < oddList.length; i++)
    {
        System.out.println(oddList[i]);
    }

    System.out.println("The EVEN List is: ");
    for(int j = 0; j < evenList.length; j++)
    {
        System.out.println(evenList[j]);
    }

    System.out.println("The NEGATIVE List is: ");
    for(int k = 0; k < oddList.length; k++)
    {
        System.out.println(negativeList[k]);
    }
}

}

1 个答案:

答案 0 :(得分:0)

我将这里以evenList为例,但同样适用于其他两个数组。

在您的代码中,您遍历inputList并检查偶数。如果是偶数,则将整个evenList数组设置为找到的值,而不是仅设置单个元素。

您可以通过在外部循环外部声明一个跟踪输入偶数的数量来解决此问题。举个例子:

int evenIndex = 0;
for(int l = 0; l < inputList.length; l++)
{
    if((inputList[l] % 2) == 0)
    {
        evenList[evenIndex++] = inputList[l];
    }
    /*Other code*/
}

你在上一回合中也犯了一个错误。您遍历negativeList,但使用evenList的大小。当negativeList小于evenList时,这将导致ArrayIndexOutOfBoundsException。