0
帮我找到这段代码中的错误,我不明白为什么它不起作用。我想显示数组中的所有唯一数字,以及它们的频率(它们发生的次数)。查找数组中不同数字的方法及其频率
package myProj;
import java.util.Scanner;
public class Freq {
static boolean isRepeated(int[] temp,int zz){
int flag=0;
int l=java.util.Arrays.asList(temp).indexOf(zz);
for(int p=0;p<l;p++){
if(temp[p]==zz){
flag=flag+1;
}
}
if(flag==0){
return false;
}
else{
return true;
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("enter the no of array elements");
int numOfNumbers = sc.nextInt();
int arrayOfNumbers[] = new int[numOfNumbers];
for (int i = 0; i < numOfNumbers; i++) {
System.out.print("Enter the number:");
arrayOfNumbers[i] =sc.nextInt();
}
for(int i = 0; i<numOfNumbers; i++){
int z=arrayOfNumbers[i];
if(!(isRepeated(arrayOfNumbers,z))){
int count=0;
for(int j=0;j<numOfNumbers;j++){
if(arrayOfNumbers[j]==arrayOfNumbers[i]){
count=count+1;
}
else{
continue;
}
}
System.out.println("Frequency of "+arrayOfNumbers[i]+"is"+count);
}
else{
continue;
}
}
}
}
实施例预期输出频率的[2,20,11,10,5,14,47,23,20,12,11,10]
- 2:1频率20的:2频率的11:2频率 10:频率的5 2:1频率14:频率的47 1:1 频率的23:频率的1 12:1
请帮助纠正我的代码而不是提出新的逻辑。
'的indexOf()''中使用isRepeated()'返回的数量第一次出现。改变方法。 –
用lastIndexOf()替换indeOf(),但为什么所有这些for循环?你想做什么? – esprittn
改写之前(以及之后)的代码,并澄清措辞+标题“问”。 – Virgil