java.util.Scanner 拒绝接受下一个(或任何)输入 [已关闭]

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

提问人:Kemper Lee 提问时间:5/8/2022 最后编辑:Mark RotteveelKemper Lee 更新时间:5/9/2022 访问量:87

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

去年关闭。

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

最终它会做更多的事情,但我什至不明白为什么它不会阅读......所以可能需要一点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());
}

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

整个扫描仪类https://www.tutorialspoint.com/java/util/java_util_scanner.htm

.next() 具体来说https://www.tutorialspoint.com/java/util/scanner_next.htm

编辑查看更多

我还收到此错误:“cannot find symbol: variable next in variable input of type Scanner”,如下所示:

lines.add(input.next);
文件 调试 java.util.scanner

评论

1赞 experiment unit 1998X 5/8/2022
你忘了括号吗? .nextLine() .next()
0赞 Kemper Lee 5/8/2022
是的。这样就可以了。
2赞 MC Emperor 5/9/2022
请不要将问题编辑为答案,因为这不适合 StackOverflow 格式。
0赞 Kemper Lee 5/9/2022
@MC皇帝 -- 我正在删除它,它警告我,我不能随意删除我的问题,并且有某种限制。我怎样才能编辑它,使其仍然有用,它不会被否决(因为它一开始有点糟糕),并避免简单地删除它?
0赞 Kemper Lee 5/9/2022
@MC 皇帝——这是适当的编辑吗?我真的很想把它留下来,但如果这不行,它就会下来哈哈

答:

1赞 rzwitserloot 5/8/2022 #1

你让这件事变得比实际复杂得多。

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

只需将 替换为 ,然后替换为 。input.nextinput.next()input.nextLineinput.nextLine()

1赞 bhawesh agrawal 5/8/2022 #2

你缺少括号“()”,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());
}
0赞 Kemper Lee 5/8/2022 #3

电话

lines.add(input.nextLine);

需要 ( ) 在 .nextLine() 的末尾,因为它是 Scanner 类中的 void 方法。 它甚至可以(但通常不应该被重写:

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

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