2015-02-12 47 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(); 

    } 

}

相關問題