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.
有什么想法吗?
答案 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
设为静态变量,最佳做法是在方法中声明它而不是类成员。