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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程玉习 中级黑马   /  2014-1-16 12:34  /  1779 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. for (int i = 0; i <20; i++) {
  2.                         if (empty != 3) {
  3.                     empty = empty + 1;
  4.                     sum = sum + 1;
  5.                     System.out.println(sum);
  6.                         } else if (empty == 3) {
  7.                                 empty = 1;
  8.                         }
  9.                 }
复制代码
这个循环为什么不是循环20次?

评分

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

查看全部评分

11 个回复

倒序浏览
没看明白,这代码明明就是循环20次。
i=0 循环到 i=19 0到19 不就是20次么?
还有你的代码中 变量自增 写得有点麻烦
sum=sum+1;
可以写成sum++;

评分

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

查看全部评分

回复 使用道具 举报
怎么不是20次啊
0到20,20时停止
回复 使用道具 举报
几番意难相付 发表于 2014-1-16 12:40
没看明白,这代码明明就是循环20次。
i=0 循环到 i=19 0到19 不就是20次么?
还有你的代码中 变量自增 写得 ...

我看的买可乐问题就是这样写的。。。。
回复 使用道具 举报
2013_ok 发表于 2014-1-16 12:54
怎么不是20次啊
0到20,20时停止

我看的买可乐问题就是这样写的。。。。
回复 使用道具 举报
几番意难相付 发表于 2014-1-16 12:40
没看明白,这代码明明就是循环20次。
i=0 循环到 i=19 0到19 不就是20次么?
还有你的代码中 变量自增 写得 ...
  1. public class Test1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(keLe(28));
  6.         }
  7.                
  8.         public static int keLe(int people) {
  9.                 int empty = 0;
  10.                 int sum = 0;
  11.                 for (int i = 0; i < people; i++) {
  12.                         if (empty != 3) {
  13.                     empty = empty + 1;
  14.                     sum = sum + 1;
  15.                     System.out.println(sum);
  16.                         } else if (empty == 3) {
  17.                                 empty = 1;
  18.                         }
  19.                 }
  20.                 return sum;
  21.         }
  22. }
复制代码
回复 使用道具 举报
for (int i = 0; i <20; i++) {
        if (empty != 3) {
                empty = empty + 1;
                sum = sum + 1;
        System.out.println(sum);
        }else if (empty == 3) {
                empty = 1;
        }
}这段代码没有让它结束循环的条件,for里面没有rerurn或break,怎么不是20次呢?

评分

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

查看全部评分

回复 使用道具 举报
是20次,编译之后是1-20
回复 使用道具 举报
for (int i = 0; i <20; i++)
循环多少次只看这个,你里面没有return和break,不会半路跳出,从i=0开始到i=20的时候跳出循环,因为20<20为假,所以一共循环20次啊。。
回复 使用道具 举报
for (int i = 0; i <20; i++) {
         if (empty != 3) {
                 empty = empty + 1;
                 sum++;
         System.out.println(sum);
        }else if (empty == 3) {
                 empty = 1;
         }
}
哥们儿,怎么转都是20次啊
回复 使用道具 举报
本帖最后由 孔丽阁 于 2014-1-16 16:27 编辑

楼主是最后结果中sum的值是14对吧?原因在于当empty的值为3时,sum不计数,empty的值返回为1,而在i=1至i=19中有6个3的倍数,所以empty有6次值返回为1,而这6次的值sum都不计数,所以sum的值不为20,但是循环体执行次数依然为20。
回复 使用道具 举报
for (int i = 0; i <20; i++)
{
         if (empty != 3)
        {
                empty = empty + 1;
                sum = sum + 1;
                System.out.println(sum);
         }
         else if (empty == 3)
        {
               empty = 1;
        }
}
这几行代码中每一次循环都有代码执行,提问者想要条件不符合时跳出循环,但是没有写调出break或结束返回return语句,这样每次循环都有执行如:提问者想empty=3时跳出循环,但是没跳出语句,执行啦
else if (empty == 3)
        {
               empty = 1;
        }
这几行代码,所以循环20次
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马