zhang / 密碼:123Scanner 讀取控制台輸入import java.util.Scanner;
public class LoginDemo {
public static void main(String[] args) {
final String CORRECT_USER = "zhang";
final String CORRECT_PASS = "123";
final int MAX_ATTEMPTS = 3;
Scanner scanner = new Scanner(System.in);
boolean loggedIn = false;
int attempts = 0;
System.out.println("=== 登入系統 ===");
while (attempts < MAX_ATTEMPTS && !loggedIn) {
System.out.print("請輸入帳號:");
String username = scanner.nextLine().trim();
System.out.print("請輸入密碼:");
String password = scanner.nextLine().trim();
if (CORRECT_USER.equals(username) && CORRECT_PASS.equals(password)) {
System.out.println("✅ 登入成功!歡迎 " + username);
loggedIn = true;
} else {
attempts++;
int remaining = MAX_ATTEMPTS - attempts;
if (remaining > 0) {
System.out.printf("❌ 帳號或密碼錯誤,還有 %d 次機會%n", remaining);
} else {
System.out.println("🔒 帳號或密碼連續錯誤 3 次,帳號已鎖定!");
}
}
}
scanner.close();
}
}
equals 比較字串:避免 == 比較參考位址導致邏輯錯誤。trim() 去除空白:防止使用者誤輸入前後空白導致比對失敗。nextLine() 而非 next():支援含空格的密碼,且避免換行符殘留問題。attempts < MAX_ATTEMPTS && !loggedIn 精準控制流程。Console.readPassword() (需在真實終端機運行)此範例展示了基礎的控制台互動邏輯,是初學者掌握迴圈、條件判斷與輸入處理的絕佳練習。