黑马程序员技术交流社区
标题: 求解!! [打印本页]
作者: .......... 时间: 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
同样是小白,只是我上心琢磨了一会,相信你认真琢磨也能看懂。下面附上你的代码。- 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();
- }
- }
- }
复制代码 根据程序执行顺序往下读。先是创建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个空行。下面附上我琢磨好的代码。还可以更优化。你可以在进一步琢磨优化一下。
- class ShiYan
- {
- public static void main(String[] args)
- {
- int x = 0;
- while (x < 5)
- { int y = 5;
- while (y > x)
- {
- System.out.print(y);
- --y;
- }
- ++x;
- System.out.println();
- }
- }
- }
复制代码
我把int y = 5 定义在第一个while语句里面了。这样每次都会读到。都会重新定义一次这个变量。结果就正确了。
作者: .......... 时间: 2015-10-29 13:44
谢谢,懂了。
作者: 刻骨铭心 时间: 2015-10-29 18:56
感觉int y=5放在第一个循环里应该就好了
作者: JYcainiao 时间: 2015-10-29 19:21
代码块的问题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |