Board logo

标题: ★★急j急!关于书本中一个程序的困惑! [打印本页]

作者: benyitonghei    时间: 2010-7-29 04:25     标题: ★★急j急!关于书本中一个程序的困惑!

〈〈 JAVA入门1.2.3〉〉第4章 4.3.1 使用while语句
的一个程序如下:
    public class SettleAccountsUsingWhile {
         public static void main(String[ ] args){
                int tikes =5;
           while(times>0){                   //while条件表达式为true时,while语句的代码块将会一直执行
          int price = 5;
          int amout =10;
          if(price>0&&amout>0){         
             int totalcost = price*amout
             System.out.println(totalcost);
         }  else {
             Syetem.out.println("price和amout的值必须都大于0,否则无法计算totalcost");
         }
                     times =  times _ 1;
         }         
              System.out.println("嘿嘿,你好哦“);
         }
         }
文中有段话是这样说的
  ”times的初始值就是while语句将要执行的次数。这里如果不在WHILE语句代码块中减少TIMES变量的   值,那么这个WHLIE语句将一直 执行下去不会停止,程序就会进入所谓的“死循环”
                       关于这个程序的困惑:
既然TIMES的初始值是5,那么WHILE就要执行5次;
如果程序中,没有”times =  times _ 1;“,”WHLIE语句将一直 执行下去不会停止“ 这不是与WHILE将要执行5次发生冲突了吗?
        如果 ”WHLIE语句将一直 执行下去不会停止“,那么前面的  ”TIMES的初始值是5不就失去意义了吗?
作者: benyitonghei    时间: 2010-7-29 07:37

晕哦。。 熬了一个晚上,被这个问题困住喽。。。没人知道吗?
作者: fwbook    时间: 2010-7-29 08:54

书上讲的循环次数,都是根据这个代码来说的。如果脱离这个代码,循环次数讲解都是没有意义了。

你理解的确实正确。times初始值为5,每次循环times都会减一。当循环5次后,times=0,所以不满足继续循环的条件times>0,所以循环不会继续进行了。

所以,千万不要把这个程序的特例去普遍推广。这个程序只是让大家了解while的循环条件对循环的影响。
作者: fwbook    时间: 2010-7-29 08:55

最后提个建议,大家一般晚上4点,都在睡觉。如果你有问题,就直接发到论坛中。不用专门等。

睡个好觉,第二天才有好精神来继续学习。:)
作者: benyitonghei    时间: 2010-7-30 09:48

恩。。。收到拉。。谢谢拉




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0