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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志广 中级黑马   /  2012-6-24 12:47  /  2577 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 007lzg 于 2012-6-24 15:26 编辑

class For
{
public static void main(String[] args)
{
  int i=0,count=0;
         for(i=0;i<100;i++)
         {
          if(i%7==0)
        //System.out.println("i="+i);
          count++;
         }
        System.out.println("count="+count);
  }
}
为什么System.out.println("i="+i);前加注释和不加注释count的结果不一样呢?

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 新手鼓励下,能加大括号尽量加.

查看全部评分

11 个回复

倒序浏览
这个题目你把代码变成这样就看的很清楚了:
  1. class For
  2. {
  3. public static void main(String[] args)
  4. {
  5.   int i=0,count=0;
  6.         for(i=0;i<100;i++)
  7.         {
  8.           if(i%7==0)
  9.           System.out.println("i="+i);
  10.           count++;
  11.           System.out.println("count="+count);//在这里把count打印出来
  12.         }
  13.         System.out.println("count="+count);
  14.   }
  15. }
复制代码
先开始你没加打印语句的话,count++直接在if的后面,只有在if语句满足的条件下才打印一次
而加了打印语句之后,count++与if语句没有关系,所以在if语句不满足的情况下也会自加,最后一直加到100;

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
后者的count是for循环完后的结果,前者是每次for循环count的变化的结果
回复 使用道具 举报

这是运行的部分结果,加上上面的说明,应该一看就清楚了!
回复 使用道具 举报
class For
{
public static void main(String[] args)
{
  int i=0,count=0;
        for(i=0;i<100;i++)
        {
          if(i%7==0)
                        {
                          System.out.println("i="+i);
                         count++;}
        }
        System.out.println("count="+count);
  }
}
//少个大括号 if后面的  加上就行了  把两句扩在一起就行了

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
如果你不加注释就相当于是这样了
class For {
        public static void main(String[] args) {
                int i = 0, count = 0;
                for (i = 0; i < 100; i++) {
                        if (i % 7 == 0)
                                               {
                            //System.out.println("i="+i);
                            count++;
                                               }
                }
                System.out.println("count=" + count);
        }
}
这样的count记数的 含义是0 - 99 能够被7整除的数,0,7,14,21,28,35,42,49,56,63,70,77,84,91,98一共有15个。
若加注释后代码等同于
class For {
        public static void main(String[] args) {
                int i = 0, count = 0;
                for (i = 0; i < 100; i++) {
                        if (i % 7 == 0)
                                               {
                            System.out.println("i="+i);
                       
                                               }
                                                count++;
                }
                System.out.println("count=" + count);
        }
}
这样应该明白了吧,其实比较优秀的写法不管是if还是else,for循环,不管有没有多条语句我们都应该加上{},这样一方面可以使代码更加显得有条理性,一方面代码的安全性更好。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
邵阳 中级黑马 2012-6-24 13:21:59
7#
本帖最后由 邵阳 于 2012-6-24 13:23 编辑

class For
{
public static void main(String[] args)
{
  int i=0,count=0;
        for(i=0;i<100;i++)
        {
          if(i%7==0)
        System.out.println("i="+i);//l楼主如果这样写的话,if不加{}的话,默认执行第一句话,后面的不执行。
          count++;
        }
        System.out.println("count="+count);
  }
}
正如上面count++在for循环中执行100次,所以结果是100.
如果楼主想执行count为是能够整除7的100以内的个数,应该是
class For
{
public static void main(String[] args)
{
  int i=0,count=0;
        for(i=0;i<100;i++)
        {
          if(i%7==0)
        {System.out.println("i="+i);//在这里将这两句括起来。
          count++;}
        }
        System.out.println("count="+count);
  }
}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
当然不一样…… 你的if语句没有加大括号 他会执行它后面的第一行代码  被注释掉的代码就不执行了 会执行下面一行也就是count++ 这样的结果当然和之前没注释的不一样
回复 使用道具 举报
class For
{
public static void main(String[] args)
{
   int i=0,count=0;
         for(i=0;i<100;i++)
         {
           if(i%7==0)
         //System.out.println("i="+i);  //当System.out.println("i="+i)语句注释后,if语句满足条件时,count自加一次,当System.out.println("i="+i)没有注释时,if条件成立时,执行打印语句,后面count自增语句执行for循环。
           count++;
         }
         System.out.println("count="+count);
   }
}

程序可以修改为:
class For
{
public static void main(String[] args)
{
   int i=0,count=0;
         for(i=0;i<100;i++)
         {
           if(i%7==0)
           {
          System.out.println("i="+i);
           count++;
           }
         }
         System.out.println("count="+count);
   }
}

或者class For
{
public static void main(String[] args)
{
   int i=0,count=0;
         for(i=0;i<100;i++)
         {
           if(i%7==0)
           {
         System.out.println("i="+i);
         }
           count++;
         }
         System.out.println("count="+count);
   }
}

这里能够体现大括号的应用,使程序看起来更加明了。

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
职业规划-刘倩老师 + 1
zhangfeng + 2 赞一个!

查看全部评分

回复 使用道具 举报
因为加注释的时候,count只要在是7的倍数时才自加一次,而不加注释的时候,每循环一次就自加一次,也就是自加100次
回复 使用道具 举报
邵阳 发表于 2012-6-24 13:21
class For
{
public static void main(String[] args)

:handshake
回复 使用道具 举报
class For
{
public static void main(String[] args)
{
    int i=0,count=0;
          for(i=0;i<100;i++)
          {
            if(i%7==0)
               {
                    System.out.println("i="+i);
                    count++;
                }
          }
          System.out.println("count="+count);
    }
}

不加大括号的话       if条件满足   默认执行下面一句。  
你想执行的是  “  System.out.println("i="+i);    count++;  ”  就应该把这两句加个大括号括起来就可以了。

还有

    int i=0,count=0;
          for(i=0;i<100;i++)


这里。
结果不需要  i  变量值
i 变量  可以定义在for 循环里面  
循环一结束 I 释放  
可以节约内存

改写成


    int count=0;
          for(int i=0;i<100;i++)


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