清除Java中的掃描緩衝區
一、簡介
在 Java 中, Scanner
類別通常用於讀取來自各種來源(包括控制台)的輸入。但是, Scanner
可能會在緩衝區中留下換行符,從而導致後續輸入讀取出現問題。因此,清除Scanner
緩衝區可確保輸入處理的一致性和可預測性。
在本教程中,我們將深入研究用於清除Scanner
緩衝區的不同 Java 方法。
2. 使用nextLine()
和hasNextLine()
方法
一種簡單的緩衝區清除方法涉及nextLine()
和hasNextLine()
方法。讓我們舉一個簡單的例子:
Scanner scanner = new Scanner("123\nHello World.");
@Test
public void givenInput_whenUsingNextLineWithHasNextLine_thenBufferCleared() {
int number = scanner.nextInt();
if (scanner.hasNextLine()) {
scanner.nextLine();
}
String text = scanner.nextLine();
assertEquals(123, number);
assertEquals("Hello World", text);
}
在這裡,我們透過使用字串“123\nHello World”
來建立一個Scanner
物件來模擬使用者輸入。然後,我們使用scanner.nextInt()
方法讀取一個整數,這會將換行符號留在緩衝區中。然後,我們使用scanner.hasNextLine()
方法檢查緩衝區中是否有任何剩餘輸入,並透過呼叫scanner.nextLine()
清除它。
清除緩衝區後,我們使用scanner.nextLine()
方法讀取字串輸入,該方法現在可以正確讀取“Hello World”
。最後,我們使用assertEquals
驗證讀取到的整數是123
,讀取到的字串是“Hello World.”.
3.使用skip()
方法
清除緩衝區的另一種方法是使用scanner.skip(“\n”)
方法,該方法會跳過緩衝區中剩餘的任何換行符。讓我們透過一個簡單的實作來看看它是如何運作的:
@Test
public void givenInput_whenUsingSkip_thenBufferCleared() {
int number = scanner.nextInt();
scanner.skip("\n");
String text = scanner.nextLine();
assertEquals(123, number);
assertEquals("Hello World", text);
}
在此範例中,使用nextInt()
方法讀取整數後,我們使用skip(“\n”)
方法跳過緩衝區中剩餘的換行符。這會清除緩衝區,從而允許後續的nextLine()
方法正確讀取「 Hello World
」。
4。
總之,管理Scanner
緩衝區對於 Java 應用程式中一致且準確的輸入處理至關重要。在本教程中,我們探索了使用nextLine()
和hasNextLine().
來清除Scanner
緩衝區。
與往常一樣,本文的完整程式碼範例可以在 GitHub 上找到。