以下是小弟初学JAVA写的第一个象样的程序(随机生成5000个1~48的整数,并统计每个数出现多少次)
可是下面的程序运行的结果却都是  0 :122次
这样循环49行,但每行都一样啊
我查了好几遍,可还是没有查到原因,希望哪位大哥能帮小弟一把
package 产生随机数统计并输出;
import java.util.*;public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
         int i,j,no[],no_sum[];                 
       
       /*
        no[]数组存放数字,如,no[1]放数字1;
        no_sum[]数组存放该数的出现次数,如,no_sum[1]=5表示数字1出现的次数是5次
        */
       
       no=new int[50];
       no_sum=new int[5000];
       Random rndTemp = new Random();     //声明一个随机数的类rndTemp
       
       for(i=0;i<=48;i++);{
           no[i]=i;
           no_sum[i]=0;
       }
       for(i=1;i<=5000;i++){
           int intRnd = (Math.abs(rndTemp.nextInt()))%49;   
           
           /*
            用nextInt()产生不同的随机数,先对随机数取绝对值,再求49的余数,这样intRnd就是0~48的数了
            *另外,intRnd本身就存在了,不需要在前面声明(编写时走了弯路)
            */
           
           for(j=0;j<=48;j++){
               if(intRnd==no[j]) {
                  no_sum[j]++;
                  }           //对随机数进行统计
           }
       }
       for(i=0;i<=48;i++)  System.out.println (no[i]+" : "+no_sum[i]+"次");
    }
}

解决方案 »

  1.   

    for(i=0;i<=48;i++);{
                     ~~~~
    你这个错误也太夸张了吧,这种我试了半天才看出来,晕死
      

  2.   

    建议你以后这种i不要在外面定义
    写成 for(int i = 0; i < array.length(); i++)
    以后就不会有这种错误了,晕死。
      

  3.   

    我把i 放在里面定义的时候,下面的两行出现了这样的问题:F:\JAVA项目\I\产生随机数统计并输出\src\产生随机数统计并输出\Main.java:40: cannot resolve symbol
    symbol  : variable i 
    location: class 产生随机数统计并输出.Main
               no[i]=i;
    F:\JAVA项目\I\产生随机数统计并输出\src\产生随机数统计并输出\Main.java:40: cannot resolve symbol
    symbol  : variable i 
    location: class 产生随机数统计并输出.Main
               no[i]=i;
    F:\JAVA项目\I\产生随机数统计并输出\src\产生随机数统计并输出\Main.java:41: cannot resolve symbol
    symbol  : variable i 
    location: class 产生随机数统计并输出.Main
               no_sum[i]=0;
    3 errors
      

  4.   

    for(i=0;i<=48;i++);{
                     ~~~~
    你这个错误也太夸张了吧,这种我试了半天才看出来,晕死
    -------------
    人家老早都说了,你还晕什么晕
      

  5.   

    for(i=0;i<=48;i++);{
                     ---这里怎么会有个";"呢?
      

  6.   

    倒我说的是这样调整:建议你以后这种i不要在外面定义
    写成 for(int i = 0; i < array.length(); i++)
    以后就不会有这种错误了,晕死。
      

  7.   

    这个有什么好调整的,你要在for外面用到i就必须在外面定义,作用域的问题
      

  8.   

    import java.util.*;public class Test {
      public static void main(String[] args) {
        
        int[] no_sum = new int[49];
        int i, r1;
        
        Arrays.fill(no_sum, 0);
        
        for(i = 0; i < 5000; i++) {
          r1 = (int)(Math.random() * 49);
          no_sum[r1]++;
        }
        
        for(i = 0; i < 49; i++) {
          System.out.println(i + " : " + no_sum[i]);
        }
      }
    }
      

  9.   

    public class Statistic { public static void main(String[] args) {
    HashMap map = new HashMap();
    Number number;
    for (int i = 0; i < 5000; i++) {
    int intKey = (int) (Math.random() * 48) + 1;
    Integer key = Integer.valueOf(intKey);
    number = (Number) map.get(key);
    if (number != null) {
    number.count++;
    } else {
    Number nnn = new Number(key);
    map.put(key, nnn);
    }
    }
    Iterator it = map.keySet().iterator();
    for (int i = 0; i < map.size(); i++) {
    Integer keyy = (Integer) it.next();
    Number obj = (Number) map.get(keyy);
    System.out.println(keyy + ",个数是:" + obj.count);
    }
    }
    }class Number {
    Integer inte; int count; public Number(Integer integer) {
    this.inte = integer;
    count = 1;
    }
    }
      

  10.   

    import java.util.*;public class Main {    public static void main(String[] args) {       int no[],no_sum[];             
           no=new int[48];
           no_sum=new int[48];
           int intRnd;              for(int i=0;i<48;i++){
               no[i]=i;
               no_sum[i]=0;
           }
           for(int i=0;i<5000;i++){
               intRnd = (int) (Math.random() * 48) + 1;  
               no_sum[intRnd-1]++;
           }
           for(i=0;i<48;i++) 
           System.out.println ((no[i]+1)+" : "+no_sum[i]+"次");
        }
    }
      

  11.   

    我也来试一下,但是有点不明白随机函数 可以生成0吗?
    import java.util.*;
    public class intcount
    {
    public static void main(String args[])
    {
    int count[];
    count=new int[49];
    Random m=new Random();
    for(int i=1;i<=5000;i++)
    {
        int k=(int)m.nextInt(49);
        if (k==0)
        i--;
        else
    count[k]++;
    }
    int b=0;
    for(int i=1;i<49;i++)
    {
      System.out.println("数字"+i+"出现的次数是"+count[i]) ;
      b=b+count[i];
    }
    System.out.println(b);
    }
    }