Java打印九九乘法表对齐的关键是统一每个“a×b=c”算式的显示宽度,推荐用System.out.printf("%d×%d=%-2d ", j, i, j*i)控制格式,确保结果左对齐、占2字符并加空格分隔,配合双循环实现右三角整齐输出。

Java 中打印九九乘法表时,对齐的关键在于统一每个算式(如 3×4=12)所占的显示宽度。由于结果最大是 9×9=81(两位数),而算式本身长度不一(如 1×1=1 占 5 字符,9×9=81 占 6 字符),直接用 System.out.print 拼接会错位。解决方法是用格式化输出控制字段宽度,让每项右对齐、等宽排列。
用 printf 控制每个算式固定宽度
最常用且简洁的方式是使用 System.out.printf,指定最小宽度(如 %-8s 表示左对齐、至少占 8 字符;%-7d 可用于数字)。但更稳妥的是把整个算式拼成字符串再格式化,或为“结果”单独定宽。推荐为每个 “a×b=c” 整体分配固定列宽(例如 8 或 9 字符):
- 外层循环
i从 1 到 9,内层j从 1 到i - 对每个
j×i=j*i,用printf("%d×%d=%-2d ", j, i, j*i)—— 这里%-2d确保结果至少占 2 字符、左对齐,配合空格后整体较整齐 - 每行末尾加
println()换行
用 String.format 预拼接 + 统一列宽
若想更精确控制(比如让所有算式严格右对齐在 8 字符框内),可先生成字符串再补空格:
- 构造字符串:
String expr = j + "×" + i + "=" + (j * i) - 计算需补空格数:
int pad = 8 - expr.length()(假设目标宽度为 8) - 补空格:
expr + " ".repeat(Math.max(0, pad))(Java 11+)或用String.join("", Collections.nCopies(pad, " ")) - 这样每项都占满 8 位,竖向自然对齐
避免常见错位原因
错位往往不是逻辑问题,而是显示宽度没统一:
立即学习“Java免费学习笔记(深入)”;
-
别混用 print 和 println 不加空格:例如
print(j+"×"+i+"="+j*i)后直接换行,不同长度算式会导致下一行缩进不一致 -
中文字符“×”和“=”是全角还是半角? Java 字符串中写的是半角符号(
×是 Unicode 字符,但宽度按终端字体渲染,通常等同于 ASCII),只要终端用等宽字体(如 Consolas、JetBrains Mono),就不会额外偏移 - 不要依赖 tab (\t):tab 宽度不固定(常为 4 或 8),遇数字位数变化时极易错乱
完整可运行示例(推荐 printf 版)
以下代码输出整齐的右三角九九表,每项占 8 字符、左对齐、带空格分隔:
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.printf("%d×%d=%-2d ", j, i, j * i);
}
System.out.println();
}效果类似:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
……
每列顶部对齐,视觉清晰。



















