2012-02-21 193 views
1
public class driver 
{ 
private static ArrayList<String> arrayList ; 
TownBankRecord TBR = new TownBankRecord(); 
ArrayList<Record> TBList = new ArrayList<Record>(); 

public void getDate() 
{ 
try 
{ 

    BufferedReader br = new BufferedReader (new FileReader ("data/bank-data.csv")); 
    String line= " "; 
    int tokenCount=0; 
    //BankRecord bank= new BankRecord(); 

    while((line=br.readLine())!=null) 
    { 
     if (!line.equals(",")) 
     { 
      StringTokenizer st = new StringTokenizer(line,","); 
      while (st.hasMoreTokens()) 
      { 
       arrayList.add(st.nextToken()); 
       tokenCount++; 
      } 
     } 

     if (tokenCount==11) 
     { 
      er = new TownBankRecord(arrayList); 
      TBList.add(er); 

      tokenCount=0; 
     } 
    } 
} 
catch (FileNotFoundException ex) 
    { 
     System.out.println(ex.getMessage()); 
    } 
catch (IOException e) 
{ 
    System.err.println("Caught IOException: " 
         + e.getMessage()); 

} 
} 
} 

上述代碼從CSV文件中讀取。我使用了一個tokenizer,它從每一行獲取令牌,然後將它們傳遞給一個String的ArrayList。 ArrayList然後被轉移到TownBankRecord的對象er,然後最終轉移到TBlist(記錄數據類型)。我有以下錯誤呃:初始化ArrayList時出錯

cannot find symbol 
symbol: variable er 
location: class nidhin.driver. 

任何想法?

+0

您打算接受答案嗎?你有三個優秀的,正確的答案。你不必接受我的,即使是因爲它是最高票數。 – CajunLuke 2012-02-25 01:21:16

回答

2

您從不聲明er作爲變量。您也不使用您聲明的課程字段TBR。這些意圖是相同的嗎?

+0

是的,呃從來沒有宣佈過,最初,呃沒有什麼東西,至於TBR,我會在後面的程序 – 2012-02-21 17:40:51

+0

中使用它,我該如何聲明呃? – 2012-02-21 17:41:12

+2

TownBankRecord er = new TownBankRecord(arrayList); – 2012-02-21 17:44:28

1

變化:

er = new TownBankRecord(arrayList); 
TBList.add(er); 

這樣:

TBList.add(new TownBankRecord(arrayList)); 
1

看起來你還沒有宣佈任何地方er。您可以在課程中聲明er作爲成員。您也可以在方法getDate()中聲明er,只要確保在使用前初始化er即可。它完全取決於你的要求。我可以看到你已經使得arrayList是靜態的。如果你一次又一次地閱讀同一個文件,那麼就沒有必要使arrayList成爲一個靜態變量,最好的做法是在方法中而不是類成員中聲明它。