黑马程序员技术交流社区

标题: 看到让大家提神 的那个帖子了我发挥了一下求大侠帮忙解释 [打印本页]

作者: 张天天    时间: 2012-7-8 09:37
标题: 看到让大家提神 的那个帖子了我发挥了一下求大侠帮忙解释
本帖最后由 张天天 于 2012-7-8 10:31 编辑

public class Increment{
    public static void main(String[] args){
         int j = 0;
         int k = 0;
         for (int i=0; i<10; i++)
               j=j+1;
             k = ++k;
         
         System.out.println(j);
         System.out.println(k);
         
    }
}
结果是
10
1
为什么会这样啊for循环的默认循环体难道说只是下面的一行吗
作者: 艾衍年    时间: 2012-7-8 09:57
只想弱弱的说一句,是的
作者: 刘美丽    时间: 2012-7-8 10:00
{}可以算是作用域吧,你没有{}系统值承认一行的,无论是if还是for……
作者: 孙飞    时间: 2012-7-8 10:01
你可以加个大括号,不加的话就是默认的下面最近的一条执行语句
作者: 田向向    时间: 2012-7-8 10:02
本帖最后由 田向向 于 2012-7-8 10:08 编辑

如果你得循环体没有花括号{}就像你得代码这样的
for (int i=0; i<10; i++)
               j=j+1;
             k = ++k;
那么for循环的作用域是离for循环最近的那一条语句,也就是  j=j+1;
for 循环结束之后,k=++k这条语句就只执行了一次加1的操作,所以输出是1
如果你要是加了花括号{}
像这样
for (int i=0; i<10; i++){
               j=j+1;
             k = ++k;

那么for循环的作用域就是花括号里面的语句,也就是
  j=j+1;
   k = ++k;
这是很基础的东西,楼主多多学习,多多看视频吧,毕老师视频里面都有很详细的讲解。
作者: 曹恒业    时间: 2012-7-8 10:07
首先回答你的问题,for循环的默认循环体在没有{}的情况下,确实仅仅包含1个;的语句。
建议,在while(),for(),if()等判断语句之后,即使后面只有一条执行语句,也把这条语句放在{}内,否则在面对大片代码的时候这种错误非常不易察觉。
作者: 万宝东    时间: 2012-7-8 10:09
public class Increment{
     public static void main(String[] args){
          int j = 0;
          int k = 0;
          for (int i=0; i<10; i++)
                j=j+1;
              k = ++k;
         
          System.out.println(j);
          System.out.println(k);
         
     }
}
楼主这个程序算出这个结果是正常的,因为你的for循环没有加{},所以默认的for循环只控制下面的一行代码,也就是 j=j+1;。 k = ++k;这一句不在for循环内,所以只执行一次。要想让for循环控制k = ++k;就要加上{}。代码如下
  1. package wbd.demo;

  2. public class Increament{
  3.     public static void main(String[] args){
  4.          int j = 0;
  5.          int k = 0;
  6.          for (int i=0; i<10; i++){
  7.                j=j+1;
  8.                k = ++k;
  9.          }
  10.          
  11.          System.out.println(j);
  12.          System.out.println(k);
  13.          
  14.     }
  15. }
  16. //这个的输出结果是10  10
复制代码

作者: 张天天    时间: 2012-7-8 10:21
怎么把发的帖子的未解决改成已解决啊
作者: 陈冲    时间: 2012-7-8 11:48
张天天 发表于 2012-7-8 10:21
怎么把发的帖子的未解决改成已解决啊

在你发的帖子的一楼最下面有一个编辑,
点击之后,在主题分类里边选择已解决就行了
编辑的位置就在下图所示的地方

未命名.jpg (12.48 KB, 下载次数: 18)

未命名.jpg





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