错误:将数组传递给另一个方法时不兼容的类型

时间:2013-08-22 23:16:15

标签: java arrays incompatibletypeerror

如果我的代码很乱,我很抱歉,因为我对Java很新,并且还编辑了部分代码,看看我是否可以使它工作。我有一项任务,我必须在1000之间生成25个随机整数,并将它们存储在一个数组中。然后,我必须创建另一个方法,将偶数整数分类为一个单独的数组,然后用另一个方法中的赔率来做这个。

我的问题是,无论我怎么努力,我都无法让我的偶数排序方法用100随机整数来识别原始数组。命令提示符说它需要int[]但是找到了int。我甚至尝试使sortEvens方法需要一个整数而不是一个数组,并且提示说完全相反。这是我的代码:

public class AssignmentEight
{
public static void main (String[] args)
{
    final int NUMBER_OF_ELEMENTS = 100;
    int numbers[];
    int evens[];
    int odds[];
    numbers = new int[100];

    for (int n = 0; n < numbers.length; n++)
    {
        numbers[n] = (int)(Math.random() * 25);
    }

    evens = sortEvens (numbers);
    display (evens);
}

public static int sortEvens (int a[])
{

    int evens[];
    for (int n = 0; n < 100; n++)
    {
        int x = (a[n] % 2);
        if (x == 0)
        {
            evens[n] = a[n];
        }
    }
    return evens;
}

public static void display (int array[])
{
    for (int n = 0; n < array.length; n++)
        System.out.print(array[n]);
        System.out.print("\t");
}
}

如果这没有意义,我道歉。我的主要问题是我无法编译我的程序。如有必要,我会尽力提供进一步的细节。

1 个答案:

答案 0 :(得分:2)

您的sortEvens()方法需要返回int[]。您也忘记了初始化阵列。

public static int[] sortEvens (int a[]) {
    int evens[] = new int[100];
    // ...
}

getEvens()方法

if ((x == 0)) // ^ (x == 2)) <-- remove this ^ condition
    totalEvens += 1;

for (n = 0; n < a.length; n++) { // loop a.length times; not totalEvens
    x = (a[n] % 2);
    if (x == 0) { // ADDED
        evens[y] = a[n];
        y++; // increment only when an even is found
    } // ADDED
}

getOdds()方法

for (n = 0; n < a.length; n++) { // loop a.length times; not totalOdds
    x = (a[n] % 2);
    if (x == 1) { // ADDED
        odds[y] = a[n];
        y++; // increment only when an odd is found
    } // ADDED
}