2015-09-06 385 views
1

我试图从包含“name,int month,int date,int year”信息的多行文件读取数据。 Person对象将这些项目作为其构造函数参数。当我尝试从文件中读取,不过,填充列表,我得到以下错误:NoSuchElementException从文件中读取单词和数字

Exception in thread "main" java.util.NoSuchElementException 
    at java.util.Scanner.throwFor(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at lab03.PersonSort.populate(PersonSort.java:56) 
    at lab03.PersonSort.main(PersonSort.java:38) 

这里是我的代码:

public static void main(String[] args) throws Exception { 

    ArrayList<Person> people = new ArrayList<Person>(); 

    populate(people); 
    //selectionSort(people); 

    int index = 0; 
    while (index < people.size()) 
    { 
     System.out.println(people.get(index)); 
     index++; 
    } 

} 

public static ArrayList populate(ArrayList<Person> array) { 
    final String PERSON_FILE = ".\\src\\Persons.txt"; 
    Scanner input = new Scanner(PERSON_FILE); 

    while (input.hasNext()) { 
     String name = input.next(); 
     int month = input.nextInt(); 
     int day = input.nextInt(); 
     int year = input.nextInt(); 
     Person temp = new Person(name, month, day, year); 
     array.add(temp); 
    } 

    return array; 
} 

的persons.txt文件中有这样的内容:

Merli 9 10 1998

利亚3 19 2013

恭7 29 1981

伊能静8月28日2002年

贝拉8月28日2010

马特9月11日1952年

卡西迪8 5 1997年

+1

向我们展示一个Persons.txt示例。 – sandris

+0

刚编辑它。 – Kevin

回答

0

的原因是,你试图解析字符串”。 \\ src \\ Persons.txt“而不是文件的内容。编写Scanner input = new Scanner(new File(PERSON_FILE).toPath());应该修复它。

相关问题