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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 松毛 高级黑马   /  2013-11-4 07:25  /  1264 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 松毛 于 2013-11-4 11:41 编辑

class TestDemo7
{
        public static void main(String[] args)
        {
                int sum = 0;
                int count = 0;
               
                while(sum < 100)
                {
                        for(int i=1;i<=7;i++)
                        {
                                if(i<7)
                                {
                                        sum = sum+10;
                                        count++;
                                }
                                else
                                {
                                        sum= (sum+20)/2;
                                        count++;
                                }
                        }
                }
                System.out.println("count:"+count);
        }
}
各位大侠,为什么我的这段代码编译通过,但输不出count的值啊?????
谢谢!

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

9 个回复

倒序浏览
本帖最后由 魏-玉-彪 于 2013-11-4 08:23 编辑


  1. class TestDemo7 {
  2.         public static void main(String[] args) {
  3.                 int sum = 0;
  4.                 int count = 0;

  5.                 while (sum < 100) {
  6.                         for (int i = 1; i <= 7; i++) {
  7.                                 if (i < 7) {
  8.                                         sum = sum + 10;
  9.                                          count++;
  10.                                  //    System.out.println("ifsum" + sum);
  11.                               //  System.out.println("ifcount:" + count);
  12.                                        
  13.                                 } else {
  14.                                         sum = (sum + 20) / 2;
  15.                                         count++;
  16.      //   System.out.println("elsesum" + sum);
  17.    //        System.out.println("elsecount:" + count);
  18.                                 }
  19.                                 
  20.                         } //System.out.println("count1:");  这个语句放到这里就可以输出了
  21.                 }
  22.                 System.out.print("count:");   //while 经测试发现,你这是一个死循环, 不会跳出while
  23. //而这个语句定义到while 外面自然不会执行到
  24.         }
  25. }
复制代码
  加上注释处的语句执行后分析你就明白了.while陷入了死循环,而编译时期只检查语法错误,所以可以通过.运行时无法执行到所以,没有输出结果

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 早啊!

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
{:soso_e103:}很明显是while进入死循环了。楼上那样输出应该也是有问题的,既然while死循环就会一直输出count的值了。。

这是不是小明攒钱那道题啊。楼主再努力自己写吧。。。
回复 使用道具 举报
回天之力 来自手机 中级黑马 2013-11-4 08:53:03
报纸
哈哈  

回复 使用道具 举报
System.out.println("count:"+count);放到while(条件表达式){循环体即执行语句}外面是没有错误的,只是说这个循环确实有问题,sum值有问题导致进入一个死循环,如果把sum值修改例如sum<10,可以正常输出cuount:7;如果把这条输出语句写入while循环内,系统就会一直输出循环,永远挑不出来哦


回复 使用道具 举报
ciowok 中级黑马 2013-11-4 11:33:21
7#
因为i=8的时候,进入else{}语句,并结束for循环,进入while循环,while循环条件不满足,继续重新来过,这样是个死循环了
回复 使用道具 举报
松毛 高级黑马 2013-11-4 11:35:28
8#
魏春旭 发表于 2013-11-4 08:35
很明显是while进入死循环了。楼上那样输出应该也是有问题的,既然while死循环就会一直输出cou ...

对啊!:lol   谢谢啦
回复 使用道具 举报
松毛 高级黑马 2013-11-4 11:36:17
9#
胡建伟 发表于 2013-11-4 09:02
System.out.println("count:"+count);放到while(条件表达式){循环体即执行语句}外面是没有错误的,只 ...

谢谢啦!
回复 使用道具 举报
魏春旭 发表于 2013-11-4 08:35
很明显是while进入死循环了。楼上那样输出应该也是有问题的,既然while死循环就会一直输出cou ...

谢谢啦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马