如何清除java中输入缓冲区

zi8p0yeb  于 2023-01-04  发布在  Java
关注(0)|答案(2)|浏览(279)

用于避免在控制台中输入任何不需要的字符,如**\n**
我们使用nextInt()nextLine()等。
但是在这些情况下,实际上控件会提前一步,留下不需要的字符串或类似的东西,但是我想删除或清除
buffer
的内存,系统会在其中获取其他不需要的数据,例如--〉

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

因为系统将**\n作为输入整数旁边的一行。在这种情况下,不使用scan.nextLine()我只想清除/刷新存储\n的缓冲区内存。现在请告诉我如何在java中删除输入缓冲区内存**

谢谢你。:)

3hvapo4f

3hvapo4f1#

您可以使用此命令清除缓冲区中的所有现有数据:

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

如果执行此操作只是为了从输入中删除换行符(\n),则可以用途:

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

如果目标是只读取整数并跳过任何其他字符,则可以这样做:

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

j91ykkif2#

在将字符串作为输入之前,您可以简单地使用多一个scan.nextLine()

Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
scan.nextLine();  // clears the input buffer
String s = scan.nextLine();  // this statement won't get skip

参考:the solution to this hackerrank question uses the same idea which I provided

相关问题