1

我正在制作一个二叉搜索树 (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 循环,我不知道为什么。

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

4

1 回答 1

2

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

于 2012-10-21T12:52:58.797 回答