确定。我正在开发一个20问题风格的游戏,我不能让我的程序只是读取读入文件的第一行并从那里构建二叉树。正在读入该文件,但它直接进入读入文件中的最后一个条目。
public class Questions(){
File file = new File("input");
Scanner INPUT = null;
try{
INPUT = new Scanner(file);
} catch(FileNotFoundException e){
}
while(INPUT.hasNext()){
String line = INPUT.nextLine();
root = new BinaryNode<String>();
if(line.length() - 1 == '?'){
return;
}
}
}
答案 0 :(得分:1)
我没有查看整个代码,但这立即跳出来了......
while(INPUT.hasNext()){
String line = INPUT.nextLine();
root = new BinaryNode<String>(line);
if(line.length() - 1 == '?'){
return;
}
在这里,您只需使用当前root
new BinaryNode<String>
一遍又一遍地重新分配line
。在最后,你永远不会有一个字符串。您应该有一个节点结构,它提供某种类型的insert(...){...}
,以便您可以构建结构。
你也应该......
if(line.charAt(line.length() - 1 == '?'){...}
现在你的方式,它询问line
的长度是否等于?
,这不是你想要的。
修改(根据评论)
结构(比如列表)将以节点成员作为根。假设列表是双向链接的,则节点将对列表中的上一个和下一个节点具有prev
和next
引用。当您插入该列表时,它将检查是否root == null
。如果使用数据设置了真根,则prev
和next
将设置为null
。如果为false,您将迭代列表,直到null
处于next
,然后您将在那里存储新节点,依此类推。
是的,如果这是您要求的内容,您仍然可以将这些文件分开。问题仍然是字符串类型的节点,因此没问题,您只需要一种方法来存储更多而不是其中一个。