非常感谢任何帮助。我试图让扫描仪读取文本文件,然后将其输入到arraylist中。这是我的演示程序:
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之后尝试了inputFile.hasNext()并得到了错误。
有没有人知道为什么会发生这种情况?
答案 0 :(得分:1)
根据您的代码,字符串标记化发生在每个空格之后。因此,它会认为您的文件中有7个令牌(而不是6个),因为“John”和“Smith”被视为两个单独的令牌。因此,最后一个标记再次被视为第二个雇员的“id”的下一个值,其余变量将没有任何值。因此,它会抛出“NoSuchElementException”,因为要添加的文本文件中没有更多值。
答案 1 :(得分:0)
首要问题:输入文件似乎只包含6行,7行。
但由于你的for循环,你的代码需要6 x 6行!
除此之外:例如,当您知道某行包含整数时,您可以使用nextInt()而不是读取扁平字符串。