2012-02-21 148 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成为一个静态变量,最好的做法是在方法中而不是类成员中声明它。