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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

..........

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© .......... 初级黑马   /  2015-10-29 00:56  /  429 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  Test
{
        public static void main(String[] args)
        {
                int x = 0,y = 5;
                while (x < 5)
                {
                        while (y > x)
                        {
                                System.out.print(y);
                                --y;
                        }
                        ++x;
                        System.out.println();
                }
        }

}
为什么结果不是
54321
5432
543
54
5
用for语句嵌套就可以,难道while语句不能嵌套?还是我写错了?刚开始学java,不懂。 求大神讲解。


4 个回复

倒序浏览
同样是小白,只是我上心琢磨了一会,相信你认真琢磨也能看懂。下面附上你的代码。
  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x = 0,y = 5;
  6.                 while (x < 5)
  7.                 {
  8.                         while (y > x)
  9.                         {
  10.                                 System.out.print(y);
  11.                                 --y;
  12.                         }
  13.                         ++x;
  14.                         System.out.println();
  15.                 }
  16.         }
  17. }
复制代码
根据程序执行顺序往下读。先是创建x,y两个变量,然后判断x<5true后进y>x,true后打印Y并对Y进行减一操作。接着判断Y是否>x在打印Y并再次减一。直到减到0条件为否。在对x进行+1操作并打印一次换行。然后在回去判断。这时候x是1了,判断X<5true往下走。判断y>x。这时候注意了。这个Y已经被减成0了!!!自然判断结果是否。就不会打印Y的值。程序接着往下走++x之后打印换行。所以你的结果是54321下面跟着4个空行。下面附上我琢磨好的代码。还可以更优化。你可以在进一步琢磨优化一下。
  1. class ShiYan
  2. {
  3.         public static void main(String[] args)
  4. {
  5.         int x = 0;
  6.         while (x < 5)
  7.         { int y = 5;
  8.         while (y > x)
  9.         {
  10.         System.out.print(y);
  11.         --y;
  12.         }
  13.         ++x;
  14.         System.out.println();
  15.         }
  16. }
  17. }
复制代码

我把int y = 5 定义在第一个while语句里面了。这样每次都会读到。都会重新定义一次这个变量。结果就正确了。


回复 使用道具 举报
r1503882525 发表于 2015-10-29 03:17
同样是小白,只是我上心琢磨了一会,相信你认真琢磨也能看懂。下面附上你的代码。根据程序执行顺序往下读。 ...

谢谢,懂了。
回复 使用道具 举报
感觉int y=5放在第一个循环里应该就好了
回复 使用道具 举报
代码块的问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马