2015-06-22 169 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)。 –