【发布时间】:2023-03-17 04:15:01
【问题描述】:
我对 java 还是很陌生,我有一些事情要做,这给我带来了一些麻烦。 我必须从行中读取文件行,然后从每行中创建两个字符串并将它们用于某些事情。一切都很好,除了我必须从文件中读取行。现在我有以下代码:
public static Estructura Read() throws IOException {
Estructura list = new Estructura();
Scanner teclat = new Scanner(System.in);
System.out.println("Nom del fitxer: ");
Scanner file = new Scanner(new File(teclat.nextLine()));
teclat.close();
String s = file.toString();
while (file.hasNextLine() || s.charAt(14) != '(') {
...
file = new Scanner(new File(teclat.nextLine()));
s = file.toString();
}
问题是,当我运行它并输入2.txt 时,它给我带来了这个错误:(文件格式正确)
Exception in thread "main" java.lang.IllegalStateException: Scanner closed
at java.util.Scanner.ensureOpen(Unknown Source)
at java.util.Scanner.findWithinHorizon(Unknown Source)
at java.util.Scanner.nextLine(Unknown Source)
at Llenguatges.Llegir(Llenguatges.java:66)
at Llenguatges.main(Llenguatges.java:10)
第 66 行是这一行:
file = new Scanner(new File(teclat.nextLine()));
那么,我怎样才能阅读一行,使用它并继续阅读,直到同时发生第二个条件? 我希望我解释得很好,提前谢谢
【问题讨论】:
-
为什么要马上关闭
Scanner,这样就关闭了System.in? -
因为我只从键盘读过一次,不应该是这样吗?
标签: java java.util.scanner filereader