黑马程序员技术交流社区

标题: for的问题 [打印本页]

作者: 赵嘉男    时间: 2012-5-20 23:37
标题: for的问题
        public static void main(String[] args) {
                int x = 1;
                for(System.out.println("a");x<3;System.out.println("c"))
                {
                        System.out.println("d");
                        x++;
                }

        }
视频里这个程序我怎么没明白怎么回事呢 a<3?
作者: 彩虹    时间: 2012-5-20 23:52
本帖最后由 万章云 于 2012-5-21 00:11 编辑

          for(System.out.println("a");x<3;System.out.println("c"))
这一句中的a<3就是控制循环条件的啊,这个for循环只不过是把条件中的第一个和第三个分号前的内容换成了一条打印语句而已,程序照样能执行,for循环也能进行,没什么大问题啊,程序运行结果为adcdc
作者: 龚正军    时间: 2012-5-20 23:58
毕老师用这个代码,只是为了说明for循环的时候对不同表达式的读取顺序,并且告诉学员,表达式不是只有int x=0;之类的。

明白上面的后就能看懂了,首先FOR循环一进去就会读System.out.println("a");得a,
                        然后读取判断x<3;没问题,继续往下走,System.out.println("d");得d---------------然后System.out.println("c")得C,一直到X=3结束,------------结果得:adcdc


作者: 贾旭    时间: 2012-5-21 10:55
这个问题还得从for的格式说起了。
for的格式:
for(循环的初始化语句;循环条件;循环迭代语句)}
   循环体。
}
程序开始执行的时候,先从循环的初始化语句开始执行,循环的初始化语句只在循环开始前执行一次。
在执行循环体之前,先看循环条件的值,如果为true就执行循环体,每执行完一次循环体就执行一次循环迭代语句.
当循环条件为假时,就不执行循环体了。
毕导讲这道题其实就是不让我们的思维固化,不要认为只有for(int i=0;i<10;i++)这种形式。我们还是要明白for的原理
作者: 我能驾驭住    时间: 2012-5-21 11:19
本帖最后由 我能驾驭住 于 2012-5-21 11:21 编辑

我以为语句错了,
x=1:打印:a d c
x=2:打印:d
x=3:打印:c
x=2的时候,为什么不打印C啊?我也不明白了
作者: 余宏    时间: 2012-5-21 11:39
for (表达式1;表达式2;表达式3)
    { 若干语句
    }
   for语句由关键字for和括号中用分号分割的3个表达式,以及一个复合语句组成,其中的“表达式2”必须是一个求值为boolean型数据的表达式(判断条件),而复合语句称作循环体。
for语句的执行规则是:
    (1)计算“表达式1”,完成必要的初始化工作
    (2)判断“表达式2”的值,若“表达式2”的值为true,      则进行(3),否则进行(4)。
    (3)执行循环体,然后计算“表达式3”,以便改变循环条件,进行(2)。
    (4)结束for语句的执行.

作者: 包晗    时间: 2012-5-21 11:41
for(System.out.println("a");x<3;System.out.println("c"))
中a<3 是判断的条件 .
一般形式为: for(<初始化>; <条件表达式>; <增量>) 语句;
初始化总是一个赋值语句, 它用来给循环控制变量赋初值;
条件表达式是一个关系表达式, 它决定什么时候退出循环;
增量定义循环控制变量每循环一次后 按什么方式变化。
这三个部分之间用";"分开。
作者:  夜风    时间: 2012-5-21 12:23
龚正军 发表于 2012-5-20 23:58
毕老师用这个代码,只是为了说明for循环的时候对不同表达式的读取顺序,并且告诉学员,表达式不是只有int x ...

看视频的时候这里好像没问题的,他一说我突然懵了,求详细解答。
X=1时候输出a,然后判断X<3,继续d,然后程序走到c?为什么不继续循环体x++了呢,为什么输出c后再走x++?
作者: 李海    时间: 2012-5-21 19:44
 夜风 发表于 2012-5-21 12:23
看视频的时候这里好像没问题的,他一说我突然懵了,求详细解答。
X=1时候输出a,然后判断X ...

  谁说没有继续循环x++!具体过程:1,x=1=>x<3 成立  进入循环之后  此时打印的是: adc
                                 2,X=2=>x<3也成立  进入循环 之后 此时打印的是:dc
                                 3,x=3 =>x<3 不成立  跳出循环  




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