修正nextLine() 行為
第二個程式碼範例中使用nextLine() 時遇到的問題源自於nextInt() 的組合和nextLine().
問題nextInt()
nextLine() 消耗整行,包括空格和按 Enter 鍵之前輸入的字元。但是,nextInt() 僅消耗數值。如果數字後面有非數字字元或空格,nextLine() 將嘗試讀取它們,從而導致意外行為。
解決方案:消耗剩餘換行符
以確保nextLine() 按預期讀取完整行,您可以在每個nextInt() 之後添加一個nextLine( ) 呼叫以消耗該行上的任何剩餘字元。這確保了當使用 nextLine() 讀取句子時,它將收到完整的一行。
修正範例:
// Example #2 (Corrected) import java.util.Scanner; class Test { public void menu() { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("\nMenu Options\n"); System.out.println("(1) - do this"); System.out.println("(2) - quit"); System.out.print("Please enter your selection:\t"); int selection = scanner.nextInt(); scanner.nextLine(); // Consume remaining newline if (selection == 1) { System.out.print("Enter a sentence:\t"); String sentence = scanner.nextLine(); System.out.print("Enter an index:\t"); int index = scanner.nextInt(); System.out.println("\nYour sentence:\t" + sentence); System.out.println("Your index:\t" + index); } else if (selection == 2) { break; } } } }
以上是為什麼 `nextLine()` 在 `nextInt()` 之後會出現錯誤行為以及如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!