不接受用户输入eclipse java

时间:2014-10-25 15:10:25

标签: java eclipse java.util.scanner

我一直在搜索溢出的问题并用Google搜索大约半个小时,但却无法找到答案。 起初我以为可能是因为我没有关闭我的Scanner对象。我补充道  inp.close(); 毕竟我的代码,但仍然没有。 我正在使用Eclipse创建一个简单的二进制搜索算法。 我的问题是它没有保留我的意见。甚至更奇怪的是它只接受“5”。 按下输入后,只会创建更多空格。它不会转移到程序的其余部分。 我也尝试在“跳过”的值下输入更多值而没有任何成功。

Here's some screenshots

enter image description here

<小时/> enter image description here
enter image description here
enter image description here

2 个答案:

答案 0 :(得分:1)

nextInt()读取将输入的下一个标记扫描为int。

如果输入不是int,则抛出InputMismatchException

您可以使用next()来读取输入,无论其类型如何。您可以hasNextInt()确保下一个输入是int

Scanner inp = new Scanner(System.in);
if(inp.hasNext()) {
    if(inp.hasNextInt()) {
        int n = inp.nextInt();
        // do something with n
    } else {
        String s = inp.next();
        // do something with s
    }
}  

答案 1 :(得分:0)

实际上,我有一个理论 - 您的扫描程序代码工作正常,这是您的二进制搜索代码已被破坏。无论它在5的输入上起作用,但对于其他输入都会陷入无限循环。

考虑从二进制搜索代码中分解输入解析代码(例如,在main()中进行输入解析并定义binarySearch()调用的main()函数,以便您可以单独测试它们