在java中使用扫描程序读入用户输入

时间:2012-10-21 12:41:43

标签: java user-input java.util.scanner

我正在制作二元搜索树(BST)和随机BST。我所有这些工作的方法都让我感觉更加简单。失败的代码非常简单。顺便说一句,我使用标准重定向来读取值,所以我一次输入很多值,而不是一次输入一个。

while ( console.hasNextInt() ) {
   key = console.nextInt();
   System.out.println(key);
   head.remove( key );
}

其中console是我的扫描仪的名称,key是一个全局变量,用于读取树的键。调试显示它正确地经过循环,直到读取最后一个整数。之后,它似乎重新进入while循环,即使没有更多的整数可读。我显然在某个地方犯了一个错误,但这对我来说并不明显,我花了几个小时试图改写这个无济于事。任何帮助将不胜感激。

编辑 - 我输入的一个例子是:

820426496 648711744 834882112 261937632 475255968 311993216 834882112

它读取每个数字,直到834882112,然后回到while循环,我不知道为什么。

就代码而言,这正是混乱的代码。其他一切只是设置扫描仪等。

1 个答案:

答案 0 :(得分:2)

正如我在评论中所说,如果流中的下一个标记是int,则hasNextInt()返回true,如果不是int,则返回false。一旦循环读取了最后一个int,hasNextInt()只是等待输入下一个令牌以确定它是否是有效整数。如果要停止循环,则需要输入不是整数的东西。