如何读取文件并将第一行指定为二进制节点的根



好的。我正在做一个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;
  }

在这里,您只需要一次又一次地用当前linenew BinaryNode<String>重新分配root。你永远不会在最后得到超过一根绳子。您应该有一个节点结构,它提供某种类型的insert(...){...},以便您可以构建该结构。

你也应该做。。。

if(line.charAt(line.length() - 1 == '?'){...}

现在的情况是,它询问line的长度是否等于?,这不是你想要的。

编辑:(基于评论)一个结构,比如一个列表,会有一个节点成员作为根。假设列表是双重链接的,则节点将具有对列表中的前一个和下一个节点的prevnext引用。当您插入该列表时,它将检查是否为root == null。如果真根将被数据设置,则prevnext将被设置为null。如果为false,您将向上迭代列表,直到next中有一个null,然后在那里存储一个新节点,依此类推

是的,如果你要求的话,你仍然可以把文件分开。问题仍然是字符串类型的节点,所以这没有问题,您只需要一种方法来存储比其中一个更多的

最新更新