九九乘法表本質是雙層巢狀迴圈:外層控制行數(被乘數 1~9),內層控制每行列數(乘數 1~行數)。透過調整迴圈範圍、輸出格式與條件判斷,可產生多種視覺變體。
public class Print99 {
/** 1. 標準左對齊三角形 */
public void test9901() {
System.out.println("=== 1. 標準左對齊 ===");
for (int i = 1; i <= 9; i++) { // 行:被乘數
for (int j = 1; j <= i; j++) { // 列:乘數(1 到 i)
System.out.printf("%d×%d=%-2d ", j, i, i * j);
}
System.out.println();
}
}
/** 2. 右對齊直角三角形 */
public void test9902() {
System.out.println("\n=== 2. 右對齊 ===");
for (int i = 1; i <= 9; i++) {
// 輸出前導空格:每行 (9-i) 組,每組佔 8 字元寬
for (int k = 1; k <= 9 - i; k++) {
System.out.print(" "); // 8 空格對齊
}
for (int j = 1; j <= i; j++) {
System.out.printf("%d×%d=%-2d ", j, i, i * j);
}
System.out.println();
}
}
/** 3. 等腰三角形(置中) */
public void test9903() {
System.out.println("\n=== 3. 等腰三角形 ===");
for (int i = 1; i <= 9; i++) {
// 左側填充:(9-i) * 4 空格(半個單元寬度)
for (int k = 1; k <= 9 - i; k++) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.printf("%d×%d=%-2d ", j, i, i * j);
}
System.out.println();
}
}
/** 4. 倒三角形(從 9 遞減到 1) */
public void test9904() {
System.out.println("\n=== 4. 倒三角形 ===");
for (int i = 9; i >= 1; i--) { // 行:9 遞減到 1
for (int j = 1; j <= i; j++) { // 列:1 到 i
System.out.printf("%d×%d=%-2d ", j, i, i * j);
}
System.out.println();
}
}
/** 5. 完整 9×9 方陣(含對稱下半部) */
public void test9905() {
System.out.println("\n=== 5. 完整方陣 ===");
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.printf("%d×%d=%-2d ", j, i, i * j);
}
System.out.println();
}
}
}
public class Test99 {
public static void main(String[] args) {
Print99 printer = new Print99();
printer.test9901(); // 標準左對齊
printer.test9902(); // 右對齊
printer.test9903(); // 等腰三角形
printer.test9904(); // 倒三角形
printer.test9905(); // 完整方陣
}
}
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1×9=9 2×9=18 ... 9×9=81
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1×9=9 2×9=18 ... 9×9=81
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1×9=9 2×9=18 ... 9×9=81
| 技巧 | 應用 | 說明 |
|---|---|---|
printf 格式化 | 對齊輸出 | %-2d 左對齊佔 2 位,配合固定寬度空格實現對齊 |
| 外層迴圈方向 | 正序/倒序 | i=1; i<=9; i++ vs i=9; i>=1; i-- |
| 內層迴圈上界 | 三角形/方陣 | j<=i 產生三角,j<=9 產生方陣 |
| 前導空格迴圈 | 右對齊/置中 | 根據行號計算填充數量 |
printf 替換為 <td> 標籤,生成網頁版乘法表。n,支援任意 N×N 乘法表。StringBuilder 累積每行,最後一次性列印,減少 I/O 呼叫。\033[31m 紅色等)高亮顯示特定倍數。j < i 會少最後一欄,應為 j <= i。System.out.println()。