首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中清除扫描器缓冲区?

如何在Java中清除扫描器缓冲区?
EN

Stack Overflow用户
提问于 2012-05-15 23:36:00
回答 5查看 223.9K关注 0票数 42

我有这样的东西:

    Scanner in=new Scanner(System.in);
    int rounds = 0;
    while (rounds < 1 || rounds > 3) {
        System.out.print("How many rounds? ");
        if (in.hasNextInt()) {
            rounds = in.nextInt();
        } else {
            System.out.println("Invalid input. Please try again.");
            System.out.println();
        }
        // Clear buffer
    }
    System.out.print(rounds+" rounds.");

如何清除缓冲区?

编辑:我尝试了以下方法,但由于某些原因不起作用:

while(in.hasNext())
    in.next();
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-15 23:39:37

您不能显式地清除Scanner的缓冲区。在内部,它可能会在读取令牌后清除缓冲区,但这是编程者无法实现的细节。

票数 17
EN

Stack Overflow用户

发布于 2012-05-15 23:38:17

试试这个:

in.nextLine();

这将使扫描仪前进到下一行。

票数 43
EN

Stack Overflow用户

发布于 2014-08-28 15:35:50

使用以下命令:

in.nextLine();

紧随其后

System.out.println("Invalid input. Please Try Again.");
System.out.println();

或者在下面的花括号后面(你对它的评论是)。

该命令使扫描程序前进到下一行(当从文件或字符串读取时,它只是读取下一行),因此在本例中实质上是刷新它。它将清除缓冲区,并为新输入准备好扫描仪。优选地,当用户输入了无效的输入(例如要求输入数字时的字母)时,它可以用于清除当前缓冲器。

该方法的文档可以在以下位置找到:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()

希望这能有所帮助!

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10604125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档