巢狀循環、條件判斷、數學運算的綜合運用,是從新手邁向進階的必經之路。本文精選三大經典案例,通過代碼實現 → 邏輯拆解 → 變體擴展的模式,助你徹底掌握循環精髓。
b:1~9)a:1~b)\t 制表符對齊輸出public class MultiplicationTable {
public static void main(String[] args) {
for (int b = 1; b < 10; b++) { // 行:被乘數
for (int a = 1; a <= b; a++) { // 列:乘數
System.out.print(a + "*" + b + "=" + (a * b) + "\t");
}
System.out.println(); // 換行
}
}
}
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:完整 9x9 矩陣(去除 a<=b 條件)
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.printf("%d*%d=%-3d", j, i, i*j);
}
System.out.println();
}
// 變體2:倒序輸出
for (int i = 9; i >= 1; i--) {
for (int j = 1; j <= i; j++) { ... }
}
關鍵洞察:每行由 前導空格 + 星號 組成,行號 i 決定兩者數量。
public class TrianglePatterns {
public static void main(String[] args) {
printLeftAligned(5); // 左對齊直角三角形
printRightAligned(5); // 右對齊直角三角形
printIsosceles(5); // 等腰三角形
printDiamond(5); // 菱形(上下兩個等腰三角形)
}
// 1. 左對齊:*
// **
// ***
public static void printLeftAligned(int n) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) System.out.print("*");
System.out.println();
}
}
// 2. 右對齊: *
// **
// ***
public static void printRightAligned(int n) {
for (int i = 1; i <= n; i++) {
for (int k = 1; k <= n - i; k++) System.out.print(" "); // 空格遞減
for (int j = 1; j <= i; j++) System.out.print("*");
System.out.println();
}
}
// 3. 等腰三角形: *
// ***
// *****
public static void printIsosceles(int n) {
for (int i = 1; i <= n; i++) {
for (int k = 1; k <= n - i; k++) System.out.print(" "); // 空格:n-i
for (int j = 1; j <= 2 * i - 1; j++) System.out.print("*"); // 星號:2i-1
System.out.println();
}
}
// 4. 菱形 = 正向等腰 + 反向等腰
public static void printDiamond(int n) {
printIsosceles(n); // 上半部分
for (int i = n - 1; i >= 1; i--) { // 下半部分(倒序,不含中線)
for (int k = 1; k <= n - i; k++) System.out.print(" ");
for (int j = 1; j <= 2 * i - 1; j++) System.out.print("*");
System.out.println();
}
}
}
| 圖案類型 | 前導空格數 | 星號數 | 備註 |
|---|---|---|---|
| 左對齊直角 | 0 | i | 最簡單 |
| 右對齊直角 | n - i | i | 空格遞減 |
| 等腰三角形 | n - i | 2*i - 1 | 星號奇數遞增 |
| 菱形上半 | n - i | 2*i - 1 | i: 1~n |
| 菱形下半 | i - 1 | 2*(n-i) + 1 | i: n-1~1 |
三位數 abc,滿足 a³ + b³ + c³ = abc。例如 153 = 1³ + 5³ + 3³。
int num = 153;
int hundred = num / 100; // 百位:1
int ten = (num / 10) % 10; // 十位:5
int unit = num % 10; // 個位:3
public class NarcissisticNumber {
public static void main(String[] args) {
System.out.println("所有三位數水仙花數:");
for (int i = 100; i < 1000; i++) {
int a = i / 100;
int b = (i / 10) % 10;
int c = i % 10;
if (i == a*a*a + b*b*b + c*c*c) {
System.out.println(i);
}
}
}
}
153 370 371 407
public static boolean isArmstrong(int num) {
String s = String.valueOf(num);
int n = s.length();
int sum = 0;
for (char ch : s.toCharArray()) {
int digit = ch - '0';
sum += Math.pow(digit, n);
}
return sum == num;
}
雙層循環 + 三角形遍歷範圍 模式,可延伸至矩陣操作、動態規劃狀態轉移。空格數 + 星號數 = 總寬度 的幾何關係,畫圖推導比死記公式更靠譜。/100, /10%10, %10)是處理數字型問題的通用技巧,適用於回文數、完美數等判斷。建議動手修改參數、組合圖案(如空心三角形、帕斯卡三角形),在實戰中內化循環邏輯。