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