初學 Java 最有效的方式是大量編寫小程序。本文整理 7 個經典練習,涵蓋循環、數組、字符串、算法基礎,並分享初學避坑心得。
題目:找出四位數 N,使得 9×N 等於 N 的反序數(如 1234→4321)
for (int n = 1000; n <= 9999; n++) {
int ge = n % 10;
int shi = n / 10 % 10;
int bai = n / 100 % 10;
int qian = n / 1000;
int reversed = ge * 1000 + shi * 100 + bai * 10 + qian;
if (reversed == n * 9) {
System.out.println(n); // 輸出:1089
}
}
關鍵點:位運算分解數字、反序構建、邊界條件(1000-9999)。
題目:三位數等於各位數字立方和(153 = 1³+5³+3³)
for (int i = 100; i < 1000; i++) {
int g = i % 10;
int s = i / 10 % 10;
int b = i / 100;
if (g*g*g + s*s*s + b*b*b == i) {
System.out.print(i + "\t"); // 153 370 371 407
}
}
題目:1 - 2 + 3 - 4 + ... + 99 - 100
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += (i % 2 == 0) ? -i : i;
}
System.out.println(sum); // -50
優化:數學公式 (1-2)+(3-4)+... = (-1)×50 = -50
題目:2/1 + 3/2 + 5/3 + 8/5 + ... 前 20 項和
double x = 2.0, y = 1.0, sum = 0;
for (int i = 1; i <= 20; i++) {
sum += x / y;
double tmp = x;
x = x + y; // 下一項分子
y = tmp; // 下一項分母
}
System.out.println(sum);
規律:分子分母遞推:新分子=舊分子+舊分母,新分母=舊分子。
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) { // 關鍵:j <= i,非 j <= 9
System.out.print(j + "×" + i + "=" + (i*j) + "\t");
}
System.out.println();
}
常見錯誤:內層循環寫 j <= 9 會輸出矩形而非三角形。
int sum = 0;
for (int i = 1; i <= 1000; i++) {
if (i % 7 == 0 ||
i % 10 == 7 || // 個位
i / 10 % 10 == 7 || // 十位
i / 100 == 7) { // 百位
sum += i;
}
}
System.out.println(sum);
public static boolean isLeap(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
public static int daysInMonth(int year, int month) {
switch (month) {
case 2: return isLeap(year) ? 29 : 28;
case 4: case 6: case 9: case 11: return 30;
default: return 31;
}
}
ge/shi/bai/qian 比 a/b/c/d 可讀性強得多System.out.println 高效得多記住:熟能生巧,碼出未來。每一行代碼都在拉近你與資深開發者的距離。