Java打印数字金字塔格式异常问题代码排查求助
代码存在的核心问题
- 缺失行首缩进逻辑:金字塔需要居中显示,每行开头需打印对应数量的前置空格,原代码未处理该部分,所有行左对齐,无金字塔形态
- 数字生成逻辑颠倒:第N行(从1开始计数)的最大数字应为N,原代码使用
numbers - rows作为数字遍历上限,导致第一行就输出了从输入行数到1的所有数字,和预期从上到下数字逐层增多的效果完全相反 - 缺少Scanner包导入:代码开头未引入
java.util.Scanner依赖,直接运行会触发编译错误 - 空格对齐逻辑不严谨:原代码直接拼接两个空格,当数字为两位数时会出现错位,统一设置数字占宽可解决该问题
修复后可直接运行的代码
import java.util.Scanner; public class DisplayPyramid { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter the number of lines: "); int lineCount = input.nextInt(); // 遍历每一行 for (int currentLine = 1; currentLine <= lineCount; currentLine++) { // 打印行首缩进:每个数字占2位,缩进位数为(总行数-当前行数)*2 for (int indent = 1; indent <= (lineCount - currentLine) * 2; indent++) { System.out.print(" "); } // 打印左半部分:从当前行数递减到1 for (int num = currentLine; num >= 1; num--) { System.out.printf("%2d", num); } // 打印右半部分:从2递增到当前行数 for (int num = 2; num <= currentLine; num++) { System.out.printf("%2d", num); } // 换行 System.out.println(); } input.close(); } }
内容的提问来源于stack exchange,提问作者Hanginium2412
相关产品推荐
相关产品推荐

