为什么我得到NoSuchElementException?

时间:2016-03-06 02:59:05

标签: java recursion binary-tree nosuchelementexception

此方法本质上是一种读取给定输入文件并使用给定信息递归填充二叉树的方法。

输入文件是一种非常特殊的格式。一行包含Q:或A:表示以下行是问题还是答案。假设此方法使用的所有文件都将遵循此格式。

由于每个文件都遵循相同的格式,并且永远不会有奇数行,因此在到达nextLine()个调用之前,数据不应被完全消耗。尽管如此,该计划始终抛出NoSuchElementException

我有什么遗失的东西吗?

private QuestionNode readHelper(Scanner input){
    // Base case: If the given input has no more lines to read.
    if (input.hasNextLine()) {
        String category = input.nextLine();
        String text = input.nextLine();
        QuestionNode root  = new QuestionNode(text);
        if (category.startsWith("Q")) {
            // Recursive case: If there are still questions available to ask
            // more input is read, which replaces the currently stored data.
            root.left = readHelper(input);
            root.right = readHelper(input);
        } else {
            return root;
        }
    }
    return null;
}

1 个答案:

答案 0 :(得分:1)

第二次调用if语句中的nextLine()。在String category = input.nextLine()之后没有保证有nextLine()。