这个问题需要解释一下,我会尽量简洁:
我试图初始化一个 Can 对象数组,这些对象只有 2 个字段(都是字符串):名称、制造商
我正在尝试通过读取具有以下格式的 CSV 文件来初始化字段:
西红柿,亨氏
豆类,杰瑞
(两行之间没有空格,由于某种原因,它在本网站上的格式是这样的)
每行中的第一个字符串是我想成为名称的值,第二个是制造商。
所以我创建了一个方法来读取 CSV 的每一行,它将每一行传递给一个标记器方法以提取单个值:
private void readFile (String inFilename) {
FileInputStream fileStrm = null;
InputStreamReader rdr;
BufferedReader bufRdr;
int lineNum;
String line;
try {
fileStrm = new FileInputStream(inFilename);
rdr = new InputStreamReader(fileStrm);
bufRdr = new BufferedReader(rdr);
lineNum = 0;
line = bufRdr.readLine();
while {line != null) {
lineNum++;
processLine(line); //passes line to tokenizer
line = bufRdr.readLine();
}
fileStrm.close();
}
catch (IOException e) {
if (fileStrm != null) {
try { fileStrm.close(); } catch (IOException ex2) { }
}
System.out.println("Error in file processing: " + e.getMessage());
}
}
这些行被传递给这个标记器方法:
private String processLine(String csvRow) {
String thisToken = null;
StringTokenizer strTok;
strTok = new StringTokenizer(csvRow, ",");
while (strTok.hasMoreTokens()) {
thisToken = strTok.nextToken();
}
}
这就是我有点卡住的地方。要初始化我的数组,我想我需要一个 for 循环,比如
for (int i=0; i<=array.length;i++)
{
array[i].name = readFile("filename.csv");
array[i].manufacturer = readFile("filename.csv");
}
但显然这行不通。谁能建议我怎么做?我宁愿保持代码基本完整,并使用现有代码找出解决方案。
谢谢