我正在尝试创建一个返回数组模式的方法(我不会问如何制作这个方法,而是希望你不要给我任何想法。对于那些持续批评的人我的问题是重复他人,我知道答案已经在这个网站上了。这不是问题。我在名为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。谁能告诉我错误是什么并解释?
答案 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;
}