You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:27:01