黑马程序员技术交流社区

标题: for循环问题 [打印本页]

作者: 程玉习    时间: 2014-1-16 12:34
标题: for循环问题
  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次?

作者: 几番意难相付    时间: 2014-1-16 12:40
没看明白,这代码明明就是循环20次。
i=0 循环到 i=19 0到19 不就是20次么?
还有你的代码中 变量自增 写得有点麻烦
sum=sum+1;
可以写成sum++;
作者: 2013_ok    时间: 2014-1-16 12:54
怎么不是20次啊
0到20,20时停止
作者: 程玉习    时间: 2014-1-16 12:58
几番意难相付 发表于 2014-1-16 12:40
没看明白,这代码明明就是循环20次。
i=0 循环到 i=19 0到19 不就是20次么?
还有你的代码中 变量自增 写得 ...

我看的买可乐问题就是这样写的。。。。
作者: 程玉习    时间: 2014-1-16 12:59
2013_ok 发表于 2014-1-16 12:54
怎么不是20次啊
0到20,20时停止

我看的买可乐问题就是这样写的。。。。
作者: 程玉习    时间: 2014-1-16 13:01
几番意难相付 发表于 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. }
复制代码

作者: wh963572516    时间: 2014-1-16 13:26
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次呢?
作者: 俊颜魅惑众生°    时间: 2014-1-16 13:30
是20次,编译之后是1-20
作者: 李跃峰    时间: 2014-1-16 14:35
for (int i = 0; i <20; i++)
循环多少次只看这个,你里面没有return和break,不会半路跳出,从i=0开始到i=20的时候跳出循环,因为20<20为假,所以一共循环20次啊。。
作者: 放课后小朋友    时间: 2014-1-16 15:00
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:25
本帖最后由 孔丽阁 于 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。
作者: 姬运涛    时间: 2014-1-16 17:36
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次




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2