java测试题请各位高手多多指点

来源:互联网 发布:淘宝修改好评 编辑:程序博客网 时间:2024/05/21 12:45

package work;

import java.util.Random;

public class Work {

 /**
  * 随机生成50个数字(整数),每个数字的范围是[10,50],统计
  * 每个数字出现的次数以及出现次数最多的数字与它的个数,最
  * 后将每个数字及其出现次数打印出来,如果某个数字出现次数
  * 为0,则不要打印它。打印时按照数字的升序排列。
  */
 public static void main(String[] args) {
  System.out.println(a(10000000));
 }
 public static String a(int a){
  Random random=new Random();
  //随机生成的整数放入c数组
  int[] c=new int[a];
  //不同的每个数放到d数组,出现次数放e数组
  int[] d=new int[a];
  int[] e=new int[a];
  //随机产生整数,放入c数组,随机整数范围[10,50]
  int i=0;
  while(i<a){
   int b=random.nextInt(41)+10;
   c[i]=b;
   i++;
  }
  //c数组的整数放d数组次数放e数组
  for(int j=0;j<a;j++){//c数组下标 取出一个数
   for(int k=0;k<a;k++){//d数组下标 取出一个数 直到d[k]值为零
    if(d[k]!=0){//k下标位置值不为0取出值判断
     if(d[k]==c[j]){//相等已经存在此数 e数组对应位置值 加1 不相等继续
      e[k]=++e[k];
      break;
     }
    }else{//k下标位置值为0第一次放入
     d[k]=c[j];
     e[k]=1;
     break;
    }
   }
  }
  //随机数组中不相同的整数个数为m
  int m=0;
  for(int l=0;l<a;l++){
   if(d[l]!=0){//提示---- d数组从0下标开始 值不为0则加1
    m++;
   }else{
    break;
   }
  }
  //出现次数最多的整数   次数为g
  int g=e[0];
  for(int f=1;f<m;f++){//取出e数组中的次数值 直到值为0或循环结束 不为0则将大的值赋给g
   if(e[f]!=0){
    if(g<e[f]){
     g=e[f];
    }
   }else{
    break;
   }
  }
  //复制 从d,e数组的aa下标位置 复制到n,o数组的bb下标位置 复制长度m
  int[] n=new int[m];
  int[] o=new int[m];
  int aa=0;
  int bb=0;
  int cc=m;//aa+m d.length bb+m n.length
  if(bb>n.length-1||aa>d.length-1||bb<0||aa<0){
  }else{
   if(aa+m>d.length||bb+m>n.length){
    if(d.length-aa>n.length-bb){
     cc=n.length-bb;
    }else{
     cc=d.length-aa;
    };
   }else{
    cc=aa+m;
   }
   for(int j=aa,k=bb;j<cc;j++,k++){
    n[k]=d[j];
    o[k]=e[j];
   }
  }
  //System.arraycopy(d, 0, n, 0, m);
  //System.arraycopy(e, 0, o, 0, m);
  //排序 冒泡排序
  for(int p=0;p<m-1;p++){
   for(int r=0;r<m-1-p;r++){
    if(n[r]>n[r+1]){
     int q=n[r];
     n[r]=n[r+1];
     n[r+1]=q;
     int s=o[r];
     o[r]=o[r+1];
     o[r+1]=s;
    }
   }
  }
  //出现次数最多的整数的下标放入到数组y中
  int[] y=new int[m];
  int x=0;
  for(int f=0;f<m;f++){
   if(o[f]==g){
    y[x]=f;
    x++;
   }
  }
  String u="";
  for(int t=0;t<x;t++){
   u=u+"["+n[y[t]]+"]";
  }
  u="随机生成的数组中不相同的整数共"+m+"个;\n"+"出现次数最多的整数:"+u+",出现次数"+g+"次;\n";
  for(int t=0;t<m;t++){
   u=u+"数字:"+n[t]+"出现"+o[t]+"次;\n";
  }
  return u;
 }

}

0 0
原创粉丝点击