随机产生1~100的100个随机数,如何统计,重复出现三次的数,并打印出来?
int[] num = new int[100];
int[] num3Ci = new int[100];
int time = 0;
for(int i=0;i<num.length;i++){
num[i] = (int)(Math.random()*100) + 1;
System.out.print(num[i] + "\t");
if((i+1)%10==0){
System.out.println();
}
}
for(int i=0;i<num.length;i++){
time = 0;
for(int j=i+1;j<num.length;j++){
if(num[i]==num[j]){
time++;
}
if(j==num.length-1 &&time==2){
num3Ci[i] = num[i];
}
}
}
System.out.print("\n出现三次的数有:");
for(int i=0;i<num3Ci.length;i++){
if(num3Ci[i]!=0){
System.out.print(num3Ci[i] + "\t");
}
}
}我这样写的话,会把出现三次以上的数也都会打印出来?
如何让它单单只打印出现三次的数呢?

解决方案 »

  1.   

    你把if(j==num.length-1 &&time==2)改成if(j==num.length-1 &&time>1&&time<3)就行了,你的if(j==num.length-1 &&time==2)因为超过三次的time 也是从0——1——2——3......所以会都有显示出来!
      

  2.   


    这种问题很简单呀,用个HasMap 就可以实现统计次数,然后在加个if 判断就行了。
      

  3.   

    谢谢你的方法,方法是不错,不过出现五次的数好像也会打印出来哎.
    不过我后来找到问题啦,我在判断重复出现次数时
    for(int j=i+1;j <num.length;j++)
    应该写成
    for(int j=0;j <num.length;j++){
    if(num[i]==num[j] && i!=j){
    time++;
    }
    这样可以确定只统计出现三次的数啦