帮我看看这个问题怎么解决,单步执行和普通执行程序结果不同~郁闷

 所属目录:Java   |   类型:技术问答   |   时间:2007-05-21
 问题:

使用的编译器是intellij   idea4.5,学习用,别抓我盗版阿~!!  
  问题描述在注释里,请高人释疑!  
  import   java.util.random;  
   
  /**  
    *   created   by   intellij   idea.  
    *   user:   刘德华  
    *   date:   2005-6-2  
    *   time:   0:33:03  
    *   to   change   this   template   use   file   |   settings   |   file   templates.  
    */  
  public   class   randomstringgenerator   {  
   
          private   string   str="";  
   
   
          int   addrange(char   a,char   b){  
                  int   z=b-a;  
                  return   z;  
          }  
   
          string   nextstring(int   i)   {  
                  int   size;  
                  random   random;  
                  size=addrange(a,z);  
                  random=new   random();  
                  for(int   j=0;j<i;j++)   {  
                  //         random=new   random();       这句话放循环内,那么将会导致结果(str)全是同一个字符,  
                  //   但是单步执行则可以生成不同的字符串,好奇怪的一个问题!单步执行和普通执行程序的结果不一样,郁闷呢了!  
                  //   这句话放在放在循环外头则不会出现这种情况  
   
                          int   r   =   random.nextint(size);  
                          r=97+r;  
                          str=str+(char)r;  
                  }  
                  return   str;  
          }  
   
          /**  
            *   the   main   method  
            *  
            *   @param   args   unused  
            */  
          public   static   void   main(string[]   args)   throws   nullpointerexception   {  
                  randomstringgenerator   generator=new   randomstringgenerator();  
                  string   s=generator.nextstring(10);  
                  system.out.println("s   is   "+s);  
          }  
  }

· 网友精彩回答:

发表者:roland001981

random()有一个致命的弱点,它和系统时间有关,也就是说相隔时间很短的可能会得出一样的随机数  
   
  你在nextstring(int   i)中加入  
  random=new   random();  
  int   r   =   random.nextint(size);  
  system.out.println(r);  
  有时候会出现不同的结果,运行多几次,就出现  
 

.
处理 SSI 文件时出错
© 2006-2008 All Rights Reserved