使用Scanner.nextLine() 進行使用者輸入
問題:
為什麼🎜>問題: 答案: 行為上的差異源自於scanner.nextInt() 與scanner.nextLine() 相比消耗如何輸入。 在工作範例中,scanner.nextLine() 讀取整行輸入,包括空格,直到它遇到一個換行符。相較之下,scanner.nextInt() 僅讀取輸入的整數部分,將所有剩餘字元保留在輸入緩衝區中。 當使用nextInt() 呼叫而沒有任何後續調用nextLine() 時,任何輸入緩衝區中剩餘的字元(例如換行符)不會被消耗,這可能會導致後續的nextLine() 調用出現問題。 在非工作範例中,在使用者輸入一個數字,剩餘的換行符號不會被 nextInt() 消耗。因此,對 nextLine() 的後續呼叫會立即讀取換行符,導致將空字串指派給句子。 要解決此問題,可以在每個nextInt() 呼叫以消耗輸入緩衝區中的所有剩餘字元。 // Working Example
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a sentence: ");
String sentence = scanner.nextLine();
// Not Working Example
while (true) {
System.out.print("Enter a sentence: ");
int selection = scanner.nextInt();
String sentence = scanner.nextLine();
}
以上是為什麼 Java 中的「scanner.nextLine()」與「scanner.nextInt()」之後的行為不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!