我已经创建了一种方法来计算数组中出现的次数,但是我无法编译和运行它。
编译器给出错误:
countOfOccurence类型中的enceence(int [])方法不适用于参数(int)
public class countOfOccurence {
public static void main(String[] args) {
int[] number = {15,16,14};
System.out.print(occurence(number[15]));
}
public static int occurence(int[] number) {
int count = 0;
for(int i = 0 ; i < number.length; i++) {
for(int k = 0 ; i < number.length; i++) {
if(number[k] == number[i]) {
count++;
}
}
}
return count;
}
}
答案 0 :(得分:0)
您的occurrence
方法需要一个数组,但是您只是将一个int传递给它(数组中的第15个元素,这也会导致运行时错误,因为数组中只有3个元素)。
但是我也认为您的逻辑在这里不对,您当前的方法(假设可以编译)将计算数组中所有重复数字的所有出现次数,而不仅仅是您想要的数字。
首先,您的出现方法需要2个参数,即实际数组和要计算其出现次数的数字。您不需要内部循环,只需保持外部循环并在内部检查array元素是否等于所需的数字即可。
public static void main(String[] args) {
int[] number = {15,16,14};
System.out.print(occurence(number, 15));
}
public static int occurence(int[] numberArray, int number) {
int count = 0;
for(int i = 0 ; i < numberArray.length; i++) {
if(numberArray[i] == number) {
count++;
}
}
return count;
}
如果要进行优化,当然有更好/更干净的方法可以计算数组中元素的出现次数,例如使用Streams
API。
答案 1 :(得分:0)
occurence(int[] number)
函数接受整数数组参数。并且,您正在使用occurence(number[15])
调用该函数。 number[15]
表示从数字数组开始的第15个索引位置,这在您的代码中也无效。
要使您的方案正常工作,应将出现函数更改为接受两个参数,例如public static int occurence(int[] numbers, int number)
。然后,通过occurence(number, 15)
进行调用。