好的。我正在做一个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;
}
}
}
我没有仔细阅读整个代码,但它马上就出现了。。。
while(INPUT.hasNext()){
String line = INPUT.nextLine();
root = new BinaryNode<String>(line);
if(line.length() - 1 == '?'){
return;
}
在这里,您只需要一次又一次地用当前line
的new BinaryNode<String>
重新分配root
。你永远不会在最后得到超过一根绳子。您应该有一个节点结构,它提供某种类型的insert(...){...}
,以便您可以构建该结构。
你也应该做。。。
if(line.charAt(line.length() - 1 == '?'){...}
现在的情况是,它询问line
的长度是否等于?
,这不是你想要的。
编辑:(基于评论)一个结构,比如一个列表,会有一个节点成员作为根。假设列表是双重链接的,则节点将具有对列表中的前一个和下一个节点的prev
和next
引用。当您插入该列表时,它将检查是否为root == null
。如果真根将被数据设置,则prev
和next
将被设置为null
。如果为false,您将向上迭代列表,直到next
中有一个null
,然后在那里存储一个新节点,依此类推
是的,如果你要求的话,你仍然可以把文件分开。问题仍然是字符串类型的节点,所以这没有问题,您只需要一种方法来存储比其中一个更多的。