初始化ArrayList时出错

时间:2012-02-21 17:36:23

标签: java object tokenize

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,它从每一行获取令牌,然后将它们传递给Strings的ArrayList。然后将ArrayList转移到TownBankRecord的对象er,然后最终转移到TBlist(记录数据类型)。我有以下错误:

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

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您永远不会将er声明为变量。您也不使用您声明的类字段TBR。这些是否一致?

答案 1 :(得分:1)

变化:

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

到此:

TBList.add(new TownBankRecord(arrayList));

答案 2 :(得分:1)

您似乎没有在任何地方声明er。您可以在类中声明er作为成员。您也可以在方法er中声明getDate(),只需确保在使用之前初始化er。这完全取决于您的要求。我可以看到你已经arrayList静态了。如果您一次又一次地读取同一个文件,则不需要将arrayList设为静态变量,最佳做法是在方法中声明它而不是类成员。