【问题标题】:java scanner.nextLine error: no line foundjavascanner.nextLine 错误:找不到行
【发布时间】:2023-04-02 21:07:01
【问题描述】:

我正在尝试从文件中读取两行。
这是我的代码(test.java):

import java.util.Scanner;

public class test {
    public static void main(String args[]) {
        f();
        f();
    }
    static void f() {
        Scanner scanner = new Scanner(System.in);
        String str;
        str = scanner.nextLine();
    }
}

这是我尝试从文件读取输入时的终端:

$ cat>inp
abc
def
^C
$ javac test.java && java test<inp
Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1585)
    at test.f(test.java:12)
    at test.main(test.java:7)

这是我尝试从键盘读取输入时的终端:

$ javac test.java && java
abc
def
$

从键盘读取时没有问题,但在第一种情况下我得到运行时错误。 有什么问题?

附注“从文件中读取”是指在 linux 终端中使用“

【问题讨论】:

  • test和java test<inp 之间是否有空格
  • 您的文件在哪里?您似乎没有像您所说的那样阅读任何文件。您只是通过扫描仪获取用户输入。
  • “从文件读取”是指使用 ' 从 linux 终端中的文件读取输入

标签: java bash terminal java.util.scanner


【解决方案1】:

Scanner 输入流有问题,所以将 Scanner 公开如下,

import java.util.Scanner;

public class test {
    public static Scanner scanner = new Scanner(System.in);
    public static void main(String args[]) {
        f();
        f();
    }
    static void f() {
        String str;
        str = scanner.nextLine();
    }
}

【讨论】:

  • 以上代码支持从文件中读取数据“我正在尝试从文件中读取两行”
  • 这解决了我的问题。但是 Scanner 输入流有什么问题?
  • @Dharmik 是的,我们可以从文件中读取数据,只需更改扫描仪构造函数中的输入流
  • @user175023 这是因为扫描器在使用输入流初始化时会通过输入流并对其进行缓冲,因此当您访问同一个流时,它似乎是空的。
猜你喜欢
  • 2017-04-12
  • 2014-11-15
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 2021-08-18
相关资源
最近更新 更多