2015-06-22 219 views
-1

爲了避免已在控制檯中輸入類似\ n如何清除輸入緩衝區在Java

任何不必要的字符,我們使用nextInt()nextLine()

但在這些情況下,實際上控制會向前一步,留下不需要的字符串或類似的東西。 但我想刪除或清除緩衝區的內存,其中系統採取其他不需要的數據。 例如 - >

Scanner scan=new Scanner(System.in); 
scan.nextInt(); 
scan.nextline();//this statement will be skipped 

因爲系統正在\ n爲線作爲輸入的整數旁邊。 在這種情況下不使用scan.nextLine()我想簡單清晰/沖洗掉其中\ n儲存緩衝存儲器中。 現在請告訴我如何刪除輸入緩衝存儲器中的Java

謝謝。 :)

+0

出了什麼問題''nextL INE()''? –

+0

控制不等待輸入一行或任何東西,它是跳過。 –

+0

@ANUPAMCHANDA,這正是你想要的:在整數之後忽略行的結尾,不是?如果不是,你想要什麼? –

回答

2

你可以用這個來清除緩衝區中的所有現有數據:

while(sc.hasNext()) { 
    sc.next(); 
} 

如果只這樣做是爲了從輸入刪除換行符(\ n)字符,你可以使用:

while(sc.hasNext("\n")) { 
    sc.next(); 
} 

如果目標是隻讀整數,跳過任何其他字符,這會工作:

while(sc.hasNext() && !sc.hasNextInt()) { 
    sc.next(); 
} 
+1

@ANUPAMCHANDA這個答案解決了你的問題嗎?如果沒有,請更清楚地解釋你的問題。否則,將問題標記爲已回答。 – Pieter12345

+0

是的,如果它幫助解決問題,請[**接受**答案](http://meta.stackexchange.com/a/5235/155831)。 –