Ошибка инициализации ArrayList - PullRequest
1 голос
/ 21 февраля 2012
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.Я использовал токенизатор, который получает токены из каждой строки, а затем передает их в ArrayList of Strings.ArrayList затем передается объекту er TownBankRecord, который затем окончательно передается в TBlist (тип записи).У меня есть следующая ошибка для:

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

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 21 февраля 2012

Вы никогда не объявляете er как переменную.Вы также не используете объявленное вами поле класса TBR.Они предназначены для того же?

1 голос
/ 21 февраля 2012

Похоже, вы нигде не объявили er.Вы можете объявить er в классе как член.Вы также можете объявить er в методе getDate(), просто убедитесь, что вы инициализировали er перед его использованием.Это полностью зависит от ваших требований.Я вижу, что вы сделали arrayList статичным.Если вы читаете один и тот же файл снова и снова, нет необходимости делать arrayList статической переменной, и лучше всего объявлять его в методе, а не в качестве члена класса.

1 голос
/ 21 февраля 2012

Изменение:

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

к этому:

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