📌 介紹¶
在 Java 中,while 迴圈會 在條件成立時,不斷重複執行區塊內的程式。
它的語法如下:
while (條件) {
// 要重複執行的程式碼
}
如果條件一開始就是 false,那迴圈裡的程式將 完全不會執行。
這個範例程式會使用 while 來讓使用者重複輸入學生的 座號與分數,直到輸入的座號為 0 或負數時才停止。
💻 程式碼¶
package ex04;
import java.util.Scanner;
public class EXAM {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String msg = "座號\t計概\t程設\t總分\n"; // 標題列
String score = "";
int sum = 0; // 總分
int no = 1; // 座號 (初始值為1,讓迴圈先執行一次)
int sub = 0; // 科目計數器
// 外層 while:控制每位學生的輸入
while (no > 0) {
System.out.print("請輸入座號:");
no = Integer.parseInt(scn.nextLine());
if (no > 0) {
msg += no + "號\t"; // 加上座號
}
sum = 0;
sub = 0;
// 內層 while:輸入兩科成績
while (no > 0 && ++sub <= 2) {
System.out.printf("請輸入%d號%s分數:", no, (sub == 1 ? "計概" : "程設"));
score = scn.nextLine();
msg += score + "\t";
sum += Integer.parseInt(score);
}
// 加上總分
if (no > 0) {
msg += sum + "\n";
}
}
// 最後輸出成績表
System.out.println(msg);
scn.close();
}
}
🛠 實現原理¶
- 外層
while (no > 0)
- 負責控制是否繼續輸入下一位學生。
- 如果座號輸入 0 或負數,迴圈結束。
- 內層
while (no > 0 && ++sub <= 2)
- 用
sub計算科目數,這邊限定 2 科(計概 & 程設)。 - 每次輸入完一科的分數,就累加到
sum。
- 字串累積
- 用
msg變數把所有資料串起來,最後一次性輸出。
- 終止條件
- 當座號輸入 0 或負數,
while條件不成立,整個程式結束。
📋 範例執行畫面¶
請輸入座號:1
請輸入1號計概分數:80
請輸入1號程設分數:90
請輸入座號:2
請輸入2號計概分數:75
請輸入2號程設分數:85
請輸入座號:0
座號 計概 程設 總分
1號 80 90 170
2號 75 85 160
📚 學習重點¶
while迴圈適合在「重複次數不固定,但有明確終止條件」的情況使用。- 內外層
while可以用來處理巢狀輸入流程。 - 使用字串累積可以一次性輸出結果,讓程式更簡潔。
如果你想,我可以再幫你畫一張 while 迴圈流程圖,讓邏輯更直觀。
你要我幫你加流程圖嗎?