这是我的代码,请告诉我它有什么问题吗?我想找到一个数组的最大重复元素。
import java.util.*;
class solution {
public static void main (String args[]){
int i=0,j=0,k=0;
int count=-1,max=0,nmax=0,temp=0,temp2=0;
int a[]=new int[10];
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
while (i<n){
a[i]=sc.nextInt();
i++;
}
while(k<n){
while (j<n){
if(a[k]==a[j]){
count++;
}
if(count>temp){
temp=count;
}
j++;
}
if(temp>temp2){
temp2=temp;
max=a[k];
}
j=0;
k++;
}
System.out.println(max);
}
}
我将数组的最后一个元素作为输出,如果逻辑中存在任何问题,请告诉我。提前谢谢!
-------------------- EDIT ------------------------- < / p>
我没有重新分配变量,这是工作代码!
import java.util.*;
class Solution {
public static void main (String args[]){
int i=0,j=0,k=0;
int count=0,max=0,nmax=0,temp=0,temp2=0;
int a[]=new int[10];
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
while (i<n){
a[i]=sc.nextInt();
i++;
}
while(k<n){
while (j<n){
if(a[k]==a[j]){
count++;
}
if(count>temp){
temp=count-1;
}
j++;
}
//System.out.println(temp);
if(temp>temp2){
temp2=temp;
max=a[k];
//System.out.println(max);
}
j=0;
temp=0;
k++;
count=0;
}
System.out.println("The most repeating element is"+max);
}
}
答案 0 :(得分:0)
你的问题是
max=a[k];
不必将max设置为当前位置的元素,而是必须进行比较,并且只在当前元素大于当前值max时设置max。
答案 1 :(得分:0)
试试这个。
public static void main (String args[]){
int i=0,j=0,k=0;
int count=0,temp=0,temp2=1;
int a[]=new int[10];
int max=a[0];
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
while (i<n){
a[i]=sc.nextInt();
i++;
}
while(k<n){
temp = a[k];//put input elements into in temp
while (j<n){
if(temp==a[j]){ //check if any repeated element found
count++; //increment
}
if(count>temp2){ //if element present more than once
max = temp;
temp2 = count;
}
j++;
}
k++;
}
System.out.println(max);
}
<强>输入:强>
5
2
3
4
3
1
<强>输出:强>
3