Java嵌套while循环打印星号需额外变量的相关问题咨询
Java嵌套while循环打印星号三角问题解答
现有代码错误分析
- 第一段代码问题:内层循环直接修改外层循环的控制变量
a。第一轮外层循环执行时,内层循环会将a从5递减至0,内层循环结束后额外执行的a--会让a变为-1,外层循环a>0条件直接不成立,因此只会输出一行星号。 - 第二段代码问题:首先变量
b未提前声明赋值就直接给a赋值,会触发编译错误;其次赋值逻辑颠倒,应当是把当前外层循环的a值赋给临时变量b,而非反过来。
为什么内层循环需要使用新变量
外层循环的变量a是用来控制总打印行数、以及每行星号的基础数量的,每轮外层循环仅需要递减1,实现逐行星号数量减1的效果。如果内层循环直接修改a的值,会直接破坏外层循环的计数逻辑,导致循环提前终止。因此需要引入独立的临时变量承接当前行需要打印的星号数量,内层循环仅修改这个临时变量,不会影响外层循环的计数逻辑。
修正后的完整代码
package com.company; public class practice2 { public static void main(String[] args) { // 外层循环控制变量,初始值为总行数/首行星号数量 int a = 5; while (a > 0) { // 临时变量b承接当前行需要打印的星号数量 int b = a; // 内层循环打印当前行的所有星号 while (b > 0) { System.out.print("*"); b--; } // 打印完一行后换行 System.out.println(); // 外层计数减1,下一行少打印一个星号 a--; } } }
内容的提问来源于stack exchange,提问作者vishal jha
相关产品推荐
相关产品推荐

