java.util.Scanner 拒绝接受下一个(或任何)输入

java.util.Scanner refuses to take the next (or any) input

当前错误消息“找不到符号:扫描仪类型的变量输入中的变量 nextLine”

最终它会做更多的事情,但我什至不明白为什么它不能读取...所以可能需要一点时间 XD

到目前为止的方法:

public static void flipCoins(Scanner input) 
{
    ArrayList<String> lines = new ArrayList<>();
    while(input.hasNextLine())
    {
        lines.add(input.nextLine);
        // WHERE THE ERROR OCCURS
    }
    System.out.print(lines.toString());
}

这些是我一直在尝试调试的链接:

整个扫描器classhttps://www.tutorialspoint.com/java/util/java_util_scanner.htm

.next() 特别是https://www.tutorialspoint.com/java/util/scanner_next.htm

编辑更多

我也收到此错误:“无法找到符号:扫描仪类型的变量输入中的下一个变量”,错误如下:

lines.add(input.next);

你把事情搞得比实际复杂得多。

在java中,方法调用必须以括号结束;他们不是可选的。方法和字段具有单独的命名空间 - input.next,没有括号,是字段引用(所以“但是为什么语言不添加它!”是 non-starter,它不会向后兼容).

只需将 input.next 替换为 input.next(),并将 input.nextLine 替换为 input.nextLine()

您缺少括号“()”,nextLine() 是一个函数,在 java 中调用函数时我们需要在函数名称后加上括号才能调用函数。类似于您在此处所做的

while(input.hasNextLine())

这会起作用

public static void flipCoins(Scanner input) 
{
    ArrayList<String> lines = new ArrayList<>();
    while(input.hasNextLine())
    {
        lines.add(input.nextLine());
    }
    System.out.print(lines.toString());
}

来电

lines.add(input.nextLine);

.nextLine() 的末尾需要 ( ) 因为它是 Scanner [=22= 中的无效方法].它甚至可以(但通常不应该)被重写:

String input = new Scanner(file).nextLine();

因为它本质上只是 Scanner 对象的一部分。