首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java Scanner nextLine() 導致 switch 連續輸出:改用 next() 解決換行符殘留

     編輯:程式設計疑難解答

現象

輸入 3 後,控制台連續輸出兩條 System.out 語句,預期僅一條。

根因

  • Scanner.nextLine() 讀取**整行**(含結尾換行符),但若前一次輸入用 nextInt(),緩衝區殘留 \n,導致 nextLine() 直接讀到空行。
  • 2. 空字符串進入 switch,匹配 default 或其他分支,產生額外輸出。

修正

// 方案 1:統一用 next() 讀單詞(自動跳過空白符)
String input = sc.next();

// 方案 2:nextInt() 後補一個 nextLine() 吞掉換行符
int c1 = sc.nextInt();
sc.nextLine(); // 吞掉換行符
String loginUser = sc.nextLine();

最佳實踐

  • 交互式菜單**統一用 next()** 讀取選項字符/字符串,避免換行符陷阱。
  • 需讀整行(含空格)時,先 nextLine() 清空緩衝區,再正式讀取。

一行 sc.next() 替換 sc.nextLine(),瞬間解決 switch 多重輸出之謎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved