2015-02-12 54 views
1

所以我必须将此文件读入链接列表,但是当我运行代码时,它说每个scanner.next();的未知来源有关如何解决它的任何想法?Eclipse声称有未知的来源,我不知道为什么

import java.io.File; 
import java.io.IOException; 
import java.util.LinkedList; 
import java.util.Scanner; 

public class LinkedMain 
{ 
    public static <bankacctinfo> void main(String args[]) throws IOException 
    { 
     File fil1 = new File("AcctList"); 
     Scanner scanner = new Scanner(fil1).useDelimiter("[,|\n/\r]+"); 

     LinkedList<BankAcctInfo>list=new LinkedList<BankAcctInfo>(); 

     String nameFirst; 
     String nameLast; 
     int pin; 
     double balance; 

     while(scanner.hasNext()) 
     { 
      nameFirst = scanner.next(); 
      nameLast = scanner.next(); 
      pin = scanner.nextInt(); 
      balance = scanner.nextDouble(); 
      BankAcctInfo b1 = new BankAcctInfo(nameFirst, nameLast, pin, balance); 
      list.add(b1); 

     } 
     scanner.close(); 

    } 
+1

其中文件AcctList在什么位置?它有扩展名吗? – 2015-02-12 02:22:59

+0

为什么你的'main'方法是通用的(声明一个'bankacctinfo'类型参数)? – 2015-02-12 02:25:33

+0

Muli,AcctList是在Eclipse中创建的一个文件,它有一个txt扩展名,但增加了那个没有修复它。 – wedemroyz 2015-02-12 02:47:31

回答

0

根据this thread您的堆栈跟踪,因为你正在使用的JRE,而不是JDK报告未知源错误。您应该确保您已经从Oracle网站安装了最新版本的JDK,并将Eclipse设置为使用它。这会给你更多的信息堆栈跟踪。

也就是说,您的错误可能与Scanner使用next()nextInt()这样的方法有关。我以前遇到过这个问题,因为它奇怪地处理换行符,详见this thread。本质上,nextInt()不会消耗换行符。

其中一个建议就是我所做的,就是使用next(),然后用Integer.valueOf(x)解析应该是整数的行。

所以:

import java.io.File; 
import java.io.IOException; 
import java.util.LinkedList; 
import java.util.Scanner; 

public class LinkedMain 
{ 
    public static <bankacctinfo> void main(String args[]) throws IOException 
    { 
     File fil1 = new File("AcctList"); 
     Scanner scanner = new Scanner(fil1).useDelimiter("[,|\n/\r]+"); 

     LinkedList<BankAcctInfo>list=new LinkedList<BankAcctInfo>(); 

     String nameFirst; 
     String nameLast; 
     int pin; 
     double balance; 

     while(scanner.hasNext()) 
     { 
      nameFirst = scanner.next(); 
      nameLast = scanner.next(); 
      pin = Integer.valueOf(scanner.next()); 
      balance = Double.valueOf(scanner.nextDouble()); 
      BankAcctInfo b1 = new BankAcctInfo(nameFirst, nameLast, pin, balance); 
      list.add(b1); 

     } 
     scanner.close(); 

    } 

}

相关问题