返回筆記列表 / 筆記詳情

📌 介紹

在 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();
    }
}


🛠 實現原理

  1. 外層 while (no > 0)
  • 負責控制是否繼續輸入下一位學生。
  • 如果座號輸入 0 或負數,迴圈結束。
  1. 內層 while (no > 0 && ++sub <= 2)
  • sub 計算科目數,這邊限定 2 科(計概 & 程設)。
  • 每次輸入完一科的分數,就累加到 sum
  1. 字串累積
  • msg 變數把所有資料串起來,最後一次性輸出。
  1. 終止條件
  • 當座號輸入 0 或負數while 條件不成立,整個程式結束。

📋 範例執行畫面

請輸入座號:1
請輸入1號計概分數:80
請輸入1號程設分數:90
請輸入座號:2
請輸入2號計概分數:75
請輸入2號程設分數:85
請輸入座號:0

座號    計概    程設    總分
1號     80      90      170
2號     75      85      160

📚 學習重點

  • while 迴圈適合在「重複次數不固定,但有明確終止條件」的情況使用。
  • 內外層 while 可以用來處理巢狀輸入流程。
  • 使用字串累積可以一次性輸出結果,讓程式更簡潔。

如果你想,我可以再幫你畫一張 while 迴圈流程圖,讓邏輯更直觀。
你要我幫你加流程圖嗎?

根目錄 (1)
exam.rar 1.3 KB · 2025/08/15 16:28
exam.rar
1.3 KB