
本文讲解如何修改java乘法表程序,使其仅显示以主对角线为界的右下三角区域,通过判断行列索引和与最大值的关系实现空白填充,最终生成符合教学要求的格式化输出。
本文讲解如何修改java乘法表程序,使其仅显示以主对角线为界的右下三角区域,通过判断行列索引和与最大值的关系实现空白填充,最终生成符合教学要求的格式化输出。
在标准 a × a 乘法表中,若需仅保留右下三角区域(即删除左上三角部分),关键在于识别哪些位置应显示乘积、哪些应留空。观察目标输出可发现:表格从第0行第0列开始(含标题行),当行索引 i 与列索引 j 满足 i + j >= maxnum 时,该位置才属于待显示的“有效三角区”;否则应输出等宽空格,保持列对齐。
以下是对原代码的核心修正说明与完整实现:
✅ 核心逻辑修正:
将内层循环中固定的 System.out.printf("%5d", i * j); 替换为条件分支:
if (i + j >= maxnum) {
System.out.printf("%5d", i * j);
} else {
System.out.printf("%5s", ""); // 占位5字符宽的空字符串,对齐数字列
}⚠️ 注意事项:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 原代码中第一行标题(列头)和首列(行标)均从
0开始,但乘法表主体实际覆盖0..maxnum(共maxnum+1行/列),因此判断边界应使用maxnum(而非maxnum - 1); - 标题行(第0行)和分隔线无需三角裁剪,仅对数据主体行(
i从0到maxnum)应用该逻辑; - 使用
"%5s"而非"%5c"或简单空格,确保每列严格占用5字符宽度,避免因空格数量不一致导致错位。
✅ 完整可运行代码(已优化格式与健壮性):
立即学习“Java免费学习笔记(深入)”;
import java.util.Scanner;
public class MultiTable {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Please enter a positive max. number: ");
int maxnum = in.nextInt();
while (maxnum < 0) {
System.out.print("Please enter a positive max. number: ");
maxnum = in.nextInt();
}
// 打印列标题:空格 + 1 2 3 ... maxnum
System.out.printf("%10s", "");
for (int col = 1; col <= maxnum; col++) {
System.out.printf("%5d", col);
}
System.out.println();
// 打印分隔线
System.out.print("----------");
for (int col = 1; col <= maxnum; col++) {
System.out.print("-----");
}
System.out.println();
// 打印数据行:每行以 "i |" 开头,后接三角区域数值或空格
for (int i = 0; i <= maxnum; i++) {
System.out.printf("%3d%2s", i, " |");
for (int j = 0; j <= maxnum; j++) {
if (i + j >= maxnum) {
System.out.printf("%5d", i * j);
} else {
System.out.printf("%5s", "");
}
}
System.out.println();
}
in.close();
}
}? 输出效果说明:
输入 4 时,程序生成 5×5 数据矩阵(含0行0列),但仅在满足 i+j ≥ 4 的位置(如 (0,4), (1,3), (2,2), (3,1), (4,0) 及其右下方)显示乘积,其余位置为空格,自然形成清晰的下三角结构,完全匹配教学示例图像。
此方法简洁、易理解,是初学者掌握循环嵌套与条件控制的经典实践。


















