类型不兼容

时间:2016-04-30 01:39:53

标签: java

我正在尝试创建一个返回数组模式的方法(我不会问如何制作这个方法,而是希望你不要给我任何想法。对于那些持续批评的人我的问题是重复他人,我知道答案已经在这个网站上了。这不是问题。我在名为BasicMathMethods的类中创建了一个名为getTotal:

的方法
public static int getTotal(double[] a, int b)
{
    int count = 0;
    int Element;
    for(Element = 0; Element < a.length; Element++)
    {
        if(a[b] == a[Element])
        {
            count++;
        }
    }
    return count;
}

我尝试在我的模式方法中使用此方法:

 public static double Mode(double[] a)
{
    for(int element = 0; element < a.length; element++)
    {
        int[] largest = BasicMathMethods.getTotal(a, element);// gets the count of each element
        Arrays.sort(largest);
        if(BasicMathMethods.getTotal(a, element) == largest.length)
        return a[element];
    }
}

但是,我的编译器(顺便说一下是Blue J)说&#34;不兼容的类型:int不能转换为int []&#34;,而是突出显示(a,element)。我不明白这个错误。我不知道我在尝试将int []转换为int。谁能告诉我错误是什么并解释?

2 个答案:

答案 0 :(得分:3)

从getTotal返回一个int,并尝试将其放入int []变量。

_Generic

getTotal的返回类型为int[] largest = BasicMathMethods.getTotal(a, element);

int

答案 1 :(得分:0)

如果要将从BasicMathMethods.getTotal(a, element)获得的值添加到数组中,则会出现一些复杂情况。你不知道你会得到多少价值。因此,您将无法知道阵列所需的大小。

使用ArrayList代替数组。

但更重要的是。我想指出您获取mode的方法存在的主要问题。阅读下面的代码,看看它是否有意义。

public static double mode(double[] a) {

    double currentBestCandidate = a[0];
    int countCurrentBestCandidate = BasicMathMethods.getTotal(a, 0);

    // we already have index 0, lets start from 1
    for(int element = 1; element < a.length; element++) {
        int count = BasicMathMethods.getTotal(a, element);

        // if this count is greater than what we have 
        // right now, we need to update currentBestCandidate 
        // and countCurrentBestCandidate
        if(count > countCurrentBestCandidate) {
            currentBestCandidate = a[element];
            countCurrentBestCandidate = count;
        }
    }
    return currentBestCandidate;
}