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

MOOC《Java: Advanced Astrology》右倾三角形打印功能调试求助

问题分析与解决方案

你遇到的问题核心出在printTriangle方法的逻辑上,主要有两个关键问题:

  1. 冗余分支与循环起始错误:单独处理size == 1的情况完全没必要,而且循环从i=0开始会导致第一次循环输出空行(printStars(0)不会打印星号,只会输出size个空格加换行),这直接导致了测试不通过。
  2. 空格数量计算偏差:右倾三角形(右对齐样式)的每行空格数应该是size - 当前行数,而你初始将空格数设为size,导致每行空格数多了1个,或者出现多余空行。

修正后的printTriangle方法

public static void printTriangle(int size) {
    int i = 1;
    int spaces = size - 1; // 第一行的空格数为size-1,对应右对齐的起始位置
    while (i <= size) {
        printSpaces(spaces);
        printStars(i);
        spaces--; // 每行空格数递减
        i++; // 每行星号数递增
    }
}

逻辑解释

  • 去掉了冗余的size == 1分支,通用逻辑可以完美处理所有尺寸的输入(包括size=1)。
  • 循环从i=1开始,对应第一行1个星号,空格数初始为size-1(比如size=3时,第一行输出2个空格+1个星号,符合右倾三角形的视觉要求)。
  • 每循环一次,空格数减1、星号数加1,最终生成正确的右对齐三角形:
    *
     **
    ***
    

如果你题目中的“右倾三角形”是指每行向右缩进的样式(如下):

*
 **
  ***

只需调整空格数的计算逻辑,将初始空格数设为0,每行递增1:

public static void printTriangle(int size) {
    int i = 1;
    int spaces = 0;
    while (i <= size) {
        printSpaces(spaces);
        printStars(i);
        spaces++;
        i++;
    }
}

根据你提供的错误信息,修正第一种右对齐样式的代码后就能通过所有测试了。

内容的提问来源于stack exchange,提问作者malik kemp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:47:43