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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵阳 中级黑马   /  2012-6-6 07:52  /  1989 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邵阳 于 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

10 个回复

倒序浏览
本帖最后由 武剑峰 于 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);
           }
}

回复 使用道具 举报
你的问题里的一直出现1是错误的,应该是一直出现的是0;你应该先弄清楚do。。。while表达式的构成:
do{执行语句}while(条件表达式)
do...while不论条件是否满足,do while都会至少执行一次,你定义了x=0,但x++在循环以外,根本就无法执行的到,所以x一直等于0,所以条件表达式一直满足,成了死循环!
所以一直打印x=0;将x++移到执行语句里即可!

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
结果该是0啊,怎么会是1啊,x++在do-while之外,根本无法执行,每次都还是返回的0,其实这样就是成了死循环了,你想解决这问题,直接把x++移到do循环里边就ok了!
回复 使用道具 举报
do while循环的格式
                do
                {
                        执行语句;
                }while(条件表达式);
               
                执行流程:
                        1、先执行一次大括号里面的。
                        2、再判断条件表达式。如果值为true,就返回大括号里面的继续。否则,结束循环。
修改lz的代码:
                int  x=0;
                do
                {
                        System.out.println("x="+x);
                        x++;
                }
                while (x<=3);

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 很给力!

查看全部评分

回复 使用道具 举报
应该吧X++放在while语句里面,像你那样x就一直是1,没有自增,所以一直符合while条件。
所以就一直打印1了,可以改为:
          do
                {
                        System.out.println("x="+x);
                         x++;

                }
                while (x<=3);
回复 使用道具 举报
先不说这样写的初衷,自增句子应该放循环体里的。
就这样运行也应该是不停的输出x=0
因为x初始值为0,接着就进入循环体,开始不停的打印x的值,死循环,永远到不了x++那步,所以x永远为0.
回复 使用道具 举报
如果問題得到解決,請把題目改為已解決 謝謝.
回复 使用道具 举报
我想你是语句块的作用范围没有搞清楚,因为你定义的int x = 0;每次运算完,又被你定义为0了,这样下去就成了一个死循环。建议你写代码的时候多注意定义的变量的作用范围。
回复 使用道具 举报
你这是个死循环根本就不可能是1,应该是0
do{
    执行语句;
}while(条件表达式);

先执行一次do里面的语句,然后判断循环条件,满足继续执行
你这个代码的x++根本就不可能执行到,是个死循环
回复 使用道具 举报
兄弟你基础很差,加油吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马