我正在制作二元搜索树(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循环,我不知道为什么。
就代码而言,这正是混乱的代码。其他一切只是设置扫描仪等。
答案 0 :(得分:2)
正如我在评论中所说,如果流中的下一个标记是int,则hasNextInt()
返回true,如果不是int,则返回false。一旦循环读取了最后一个int,hasNextInt()
只是等待输入下一个令牌以确定它是否是有效整数。如果要停止循环,则需要输入不是整数的东西。