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

时间:2013-12-07 00:36:44

标签: java file input

确定。我正在开发一个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;
        }
      }
    }

1 个答案:

答案 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的长度是否等于?,这不是你想要的。

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

是的,如果这是您要求的内容,您仍然可以将这些文件分开。问题仍然是字符串类型的节点,因此没问题,您只需要一种方法来存储更多而不是其中一个。