【发布时间】:2017-04-30 04:16:36
【问题描述】:
任何帮助将不胜感激。我正在尝试让扫描仪读取文本文件,然后将其输入到数组列表中。这是我的演示程序:
import java.util.*;
import java.io.*;
public class EmployeeDemo
{
public static void main(String[] args) throws IOException
{
ArrayList<Employee> employees = new ArrayList<>();
File emps = new File("Employees.txt");
Scanner inputFile = new Scanner(emps);
for(int i = 0; i < 6; i++)
{
String id = inputFile.next();
String name = inputFile.next();
String department = inputFile.next();
String position = inputFile.next();
String salary = inputFile.next();
String yrsofser = inputFile.next();
employees.add(new Employee(id, name, department, position, salary, yrsofser));
}
inputFile.close();
System.out.println(employees);
}
}
对于文本文件,我现在只使用它:
101000
John Smith
EMS
EMT
21778.00
5
这是我得到的错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at EmployeeDemo.main(EmployeeDemo.java:16)
我尝试在 id 之后打印它,它给了我 id 号,然后它打印服务年限。 我还在 id 之后尝试了 inputFile.hasNext() 并得到了错误。
有人知道为什么会发生这种情况吗?
【问题讨论】:
-
您需要调用
nextLine()来使用行终止符。 -
也许只是你的例子:它包含 6 个值;但是由于周围的 for 循环,您的代码想要读取 6 x 6 的值。
-
实际上,该文件包含 7 个值(令牌),因为第 2 行是两个令牌:
John和Smith。这意味着值被读取为id = "101000"; name = "John"; department = "Smith"; position = "EMS"; salary = "EMT"; yrsofser = "21778.00";,而"5"被读取为第二个Employee的id。 -
@EJP 谢谢!但是现在我添加了 nextLine() 我收到了这个错误:'线程“main”中的异常 java.util.NoSuchElementException:在 EmployeeDemo 的 java.util.Scanner.nextLine(Scanner.java:1540) 处找不到行。 main(EmployeeDemo.java:15)'
-
糟糕!就是这样!我从文本文件中取出员工以找出问题所在,却忘记修复 for 循环。非常感谢! @鬼猫