public class E { /**
 * @param args
 */
public static void main(String[] args)
 {
       
double m=Math.random();
 
       int n=(int)m*20;
       if(n%2!=0)
     {n=n*3+1;
     }    
           
       while(n!=1) 
        { n=n/2;
          if(n%2!=0)
          n=n*3+1;
   
       }
      System.out.println(n);
}}
此程序是为了验证任意自然数如果是偶数除2如果是奇数乘3加1如此循环最终结果为1 ,我的编译通过了,为什么什么都没有输出??

解决方案 »

  1.   

    你看看api Math.random的那个方法
      

  2.   

    (int)m ==0;
    -->(int)m*20==0*20==0
      

  3.   

    int n = (int)(Math.random()*20)
    就好了啊
    因为random产生的是0-1之间的数据,抓换成int就是0啊
      

  4.   

    应该 是这样的 啊
    public class E  { /**
     * @param args
     */
     public static void main(String[] args)
     {
         
    double m=Math.random()*20;
       
       int n=(int)m;
       System.out.println(n);
       if(n%2!=0){
       while(n!=1)
       {n=n*3+1;
       }   
       System.out.println(n);
       }
       else                              
       while(n!=1)  
       { n=n/2;
         System.out.println(n);   
       } 
    }
    }
    最终 结果就为1了
      

  5.   

    我也改了下这两句  double m=Math.random();
      
                    int n=(int)(m*20)+1;
    任然没有输出
      

  6.   

    public class E  {/**
    * @param args
    */
    public static void main(String[] args)
    {
        
    double m=Math.random();
      
      int n=(int)(m*20)+1;
      if(n%2!=0)
      {n=n*3+1;
      }   
        
      while(n!=1)  
      { n=n/2;
      if(n%2!=0)
      n=n*3+1; 
      
      }
      System.out.println(n); 
    }}我改后的代码,任然没有输出,只看到cpu跑得老高,求解释?