黑马程序员技术交流社区

标题: 关于do while 语句的问题 已解决 [打印本页]

作者: 邵阳    时间: 2012-6-6 07:52
标题: 关于do while 语句的问题 已解决
本帖最后由 邵阳 于 2012-6-6 13:30 编辑

写了一个代码如下
class  Demo
{
        public static void  main(String[] arge)
        {
int  x=0;
                do
                {
                        System.out.println("x="+x);
                }
                while (x<=3);
                x++;
        }
}

怎么一直出现x=1
作者: 武剑峰    时间: 2012-6-6 07:54
本帖最后由 武剑峰 于 2012-6-6 07:56 编辑

写错错了,应该将x++放到do...while循环里面。而你写的那种方式只有等循环完了才能执行,但是你的循环一直为真是个死循环无法跳出。正确代码如下
class  Demo
{
        public static void  main(String[] arge)
        {
            int  x=0;
                do
                {
                        System.out.println("x="+x);
                      x++;

                }
                while (x<=3);
           }
}


作者: 田建    时间: 2012-6-6 08:13
你的问题里的一直出现1是错误的,应该是一直出现的是0;你应该先弄清楚do。。。while表达式的构成:
do{执行语句}while(条件表达式)
do...while不论条件是否满足,do while都会至少执行一次,你定义了x=0,但x++在循环以外,根本就无法执行的到,所以x一直等于0,所以条件表达式一直满足,成了死循环!
所以一直打印x=0;将x++移到执行语句里即可!
作者: 李鑫    时间: 2012-6-6 08:21
结果该是0啊,怎么会是1啊,x++在do-while之外,根本无法执行,每次都还是返回的0,其实这样就是成了死循环了,你想解决这问题,直接把x++移到do循环里边就ok了!
作者: 朝哥    时间: 2012-6-6 08:32
do while循环的格式
                do
                {
                        执行语句;
                }while(条件表达式);
               
                执行流程:
                        1、先执行一次大括号里面的。
                        2、再判断条件表达式。如果值为true,就返回大括号里面的继续。否则,结束循环。
修改lz的代码:
                int  x=0;
                do
                {
                        System.out.println("x="+x);
                        x++;
                }
                while (x<=3);
作者: 吴小铁你好    时间: 2012-6-6 08:36
应该吧X++放在while语句里面,像你那样x就一直是1,没有自增,所以一直符合while条件。
所以就一直打印1了,可以改为:
          do
                {
                        System.out.println("x="+x);
                         x++;

                }
                while (x<=3);

作者: 赵兵锋    时间: 2012-6-6 10:14
先不说这样写的初衷,自增句子应该放循环体里的。
就这样运行也应该是不停的输出x=0
因为x初始值为0,接着就进入循环体,开始不停的打印x的值,死循环,永远到不了x++那步,所以x永远为0.
作者: 袁錦泰    时间: 2012-6-6 10:31
如果問題得到解決,請把題目改為已解決 謝謝.
作者: 吴琼    时间: 2012-6-6 11:40
我想你是语句块的作用范围没有搞清楚,因为你定义的int x = 0;每次运算完,又被你定义为0了,这样下去就成了一个死循环。建议你写代码的时候多注意定义的变量的作用范围。
作者: 陌花╮有意、    时间: 2012-6-6 11:47
你这是个死循环根本就不可能是1,应该是0
do{
    执行语句;
}while(条件表达式);

先执行一次do里面的语句,然后判断循环条件,满足继续执行
你这个代码的x++根本就不可能执行到,是个死循环
作者: 雷云红    时间: 2012-6-6 12:18
兄弟你基础很差,加油吧




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