A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class a
  2. {
  3.         private int  a=100;
  4.         public void run()
  5.         {
  6.                 if(a>0)
  7.                 {
  8.                         while(true)
  9.                         {
  10.                                 System.out.println("为什么"+"-------"+(a--));
  11.                         }
  12.                 }
  13.         }
  14. }
  15. class test
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                 a t = new a();
  20.                 t.run();
  21.         }
复制代码
疑惑:这个程序减完之后为什么又直接一直在加

5 个回复

倒序浏览
  1. class a
  2. {
  3.         private int  a=100;
  4.         public void run()
  5.         {
  6.                         while(true)
  7.                         {
  8.                                 if(a>0)
  9.                                 {
  10.                                         System.out.println("为什么"+"-------"+(a--));
  11.                                 }
  12.                         }
  13.         }
  14. }
  15. class test
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                 a t = new a();
  20.                 t.run();
  21.         }
  22. }
复制代码
而这样减完之后是不会继续加下去的
回复 使用道具 举报
本帖最后由 bianbian18 于 2013-5-2 11:17 编辑

while(true)这个循环的条件永远是true,死循环呀
while条件为true,循环继续;为false结束循环。给while也加个可以为false的条件就可以了
比如第一个while(a<=0)...{:soso_e113:}
回复 使用道具 举报
私有a=100  第一个:因为if 在前面说明a大于0时是真的那么他执行 ”System.out.println("为什么"+"-------"+(a--));“ (这里出现BUG然后进入死循环)     第二个:因为while(true)//是真的   就开始执行if(a>0)(a大于0)所以不断减   
回复 使用道具 举报
class a
{
        private int  a=100;
        public void run()
        {
                        //只循环100以内的
                                while(a>0){//A点
                                         System.out.println("为什么"+"-------"+(a--));//当a--到0的时候,A点不成立,则循环结束。
                                }
        }
}
class Test
{
        public static void main(String[] args)
        {
               a t = new a();
                t.run();
        }
}
回复 使用道具 举报
我自己来回答吧!
  1. class a
  2. {
  3.         private int  a=100;
  4.         public void run()
  5.         {
  6.                        
  7.                         while(true)
  8.                         {
  9.                                 if(a>0)
  10.                                 {
  11.                                         System.out.println("为什么"+"-------"+(a--));
  12.                                 }
  13.                         }                //这种情况,首先while(true)它是个死循环,循环的内容if(a>0),然后输出a,直到减完,任然在死循环之内
  14.                        
  15.                        
  16.                
  17.                         /*
  18.                         if(a>0)
  19.                         {
  20.                                 while(true)
  21.                                 {
  22.                                         System.out.println("为什么"+"-------"+(a--));
  23.                                 }
  24.                         }                //此种情况if在外面,a是一个成员变量,a>0永远满足,所以内部的while永远会执行下去
  25.                        
  26.                         */
  27.                        
  28.         }
  29. }
  30. class test
  31. {
  32.         public static void main(String[] args)
  33.         {
  34.                 a t = new a();
  35.                 t.run();
  36.         }
  37. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马