黑马程序员技术交流社区

标题: 求解!! [打印本页]

作者: ..........    时间: 2015-10-29 00:56
标题: 求解!!
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,不懂。 求大神讲解。



作者: r1503882525    时间: 2015-10-29 03:17
同样是小白,只是我上心琢磨了一会,相信你认真琢磨也能看懂。下面附上你的代码。
  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语句里面了。这样每次都会读到。都会重新定义一次这个变量。结果就正确了。



作者: ..........    时间: 2015-10-29 13:44
r1503882525 发表于 2015-10-29 03:17
同样是小白,只是我上心琢磨了一会,相信你认真琢磨也能看懂。下面附上你的代码。根据程序执行顺序往下读。 ...

谢谢,懂了。
作者: 刻骨铭心    时间: 2015-10-29 18:56
感觉int y=5放在第一个循环里应该就好了
作者: JYcainiao    时间: 2015-10-29 19:21
代码块的问题




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