就是要求先产生一组随机数,然后计算每个数字出现的次数。现在我编出了一个很简单的程序,但是不能运行成功。
以下是程序
  
  public   class   text{   
  public static void main(String[] args) {    
System.out.println("The random array is:");   
    int[] n=new int [20];
 
for(int i=0;i<20;i++){
int j = (int) (Math.random()*10);
n[i]=j;
System.out.print(n[i]+" ");

                           int[] cc = new int[10];    

for (int k = 0;k < 5; k++) {       
if (n[k]=='0')       cc[0]++;
else if (n[k]=='1')  cc[1]++;         
else if (n[k]=='2')  cc[2]++;
else if (n[k]=='3')  cc[3]++;
else if (n[k]=='4')  cc[4]++;
else if (n[k]=='5')  cc[5]++;
else if (n[k]=='6')  cc[6]++;
else if (n[k]=='7')  cc[7]++;
else if (n[k]=='8')  cc[8]++;
else if (n[k]=='9')  cc[9]++;   
 
 }      
for (int m = 0;m < 10; m++) {
  System.out.println(cc[m]);
}
     }

我想的比较简单。
就是先产生一个数组n存放20个随机数
然后再有一个有10个元素的数组cc
通过查n中每一个数字
如果是0,存入cc[0]中,以此类推。
可是我这个程序运行的时候,从cc[0]到cc[9]全部输出为0。
我想知道我这个想法哪里出错了,程序又在哪里出错了。。我之前查到过用Map做的。。但我们要求不能用那个还。。
希望大家可以看看程序然后帮忙说说哪里错了。。另外就是有没有办法把那一串if简写下。。因为如果是100以内的随机数的话。。按我这个方法,需要有100个if。。太繁琐了。。
 
还请求大家帮忙看看。。谢谢!!!

解决方案 »

  1.   

    为什么不能用Map  奇怪了import java.util.*;
    public class TestArgsWords {
    private static final Integer ONE =new Integer(1);
    public static void main(String[] args) {
    Map m = new HashMap();
    for(int i=0; i<args.length; i++) {
    Integer freq = (Integer)m.get(args[i]);
    m.put(args[i],(freq == null ? ONE : new Integer(freq.intValue()+1)));
    }

    System.out.println("共探测到" + m.size() + "个数。");
    System.out.println(m);
    }
    }
      

  2.   

    public class text {
    public static void main(String[] args) {
    System.out.println("The random array is:");
    int[] n = new int[20]; for (int i = 0; i < 20; i++) {
    int j = (int) (Math.random() * 10);
    n[i] = j;
    System.out.print(n[i] + " ");
    }
    System.out.println();

    int[] cc = new int[10]; for (int k = 0; k < 20; k++) {
    if (n[k] == 0)
    cc[0]++;
    else if (n[k] == 1)
    cc[1]++;
    else if (n[k] == 2)
    cc[2]++;
    else if (n[k] == 3)
    cc[3]++;
    else if (n[k] == 4)
    cc[4]++;
    else if (n[k] == 5)
    cc[5]++;
    else if (n[k] == 6)
    cc[6]++;
    else if (n[k] == 7)
    cc[7]++;
    else if (n[k] == 8)
    cc[8]++;
    else if (n[k] == 9)
    cc[9]++; }
    for (int m = 0; m < 10; m++) {
    System.out.println(cc[m]);
    }
    }
    }根据你的思路改了一下主要是int型的 1 和字符型的 '1' 不是一回事,OK?以后问问题时学会插入Java代码,这样会省去很多不必要的麻烦
      

  3.   

    for(int i=0;i<20;i++){
    int j = (int) (Math.random()*10);
    n[i]=j;
    System.out.print(n[i]+" ");int[] cc = new int[10]; for (int k = 0;k < 5; k++) { 
    if (n[k]=='0') cc[0]++;
    else if (n[k]=='1') cc[1]++; 
    else if (n[k]=='2') cc[2]++;
    else if (n[k]=='3') cc[3]++;
    else if (n[k]=='4') cc[4]++;
    else if (n[k]=='5') cc[5]++; 
    else if (n[k]=='6') cc[6]++; 
    else if (n[k]=='7') cc[7]++; 
    else if (n[k]=='8') cc[8]++; 
    else if (n[k]=='9') cc[9]++; 
    }
    ==============================
    为什么每次产生个随机数,为什么要比较5次,逻辑在哪里?
    与0-9之间的数进行比较,不需要单引号!
    for(int i=0;i<20;i++){
      int j = (int) (Math.random()*10);
      n[i]=j;
      System.out.print(n[i]+" ");
    } int[] cc = new int[10]; 
    if (n[k]==0) cc[0]++;
    else if (n[k]==1) cc[1]++; 
    else if (n[k]==2) cc[2]++;
    else if (n[k]==3) cc[3]++;
    else if (n[k]==4) cc[4]++;
    else if (n[k]==5) cc[5]++; 
    else if (n[k]==6) cc[6]++; 
    else if (n[k]==7) cc[7]++; 
    else if (n[k]==8) cc[8]++; 
    else if (n[k]==9) cc[9]++; 
      

  4.   


    public class StudentHome {
    public static void main(String args[]) {
    int[] a = new int[20];
    int[] flag = new int[20];
    int count = 0;

    for(int i = 0; i < flag.length; ++i){
    int tmp = (int)(Math.random() * 10);
    a[i] = tmp;
    flag[i] = 0;//标志数组,当为0时,表示这个数还没有进行判断,否则,则表示这个数已经进行了判断
    System.out.print(a[i] + "  ");
    }

    System.out.println();

    for(int i = 0; i < a.length; i++) {
    if(flag[i] == 0) {
    for(int j = 0; j < a.length; j++) {
    if(a[i] == a[j] && flag[j] == 0) {
    flag[j] = 1;
    count++;
    }
    }
    System.out.println(a[i] + "出现了" + count + "次!");
    count = 0;
    }
    }
    }
    }
    这个没有用map
      

  5.   

    用map多麻烦啊。直接把产生的随机数按照下标存入对应的数组,最好看数组长度不就知道了?要活用数组,不要动不动就map