這個問題需要多一點的解釋,我會嘗試儘可能簡潔:只有正在初始化對象從一個CSV文件陣列
我一直在嘗試initalise可以將對象的數組,這些對象有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");
}
但顯然這是行不通的。任何人都可以建議我如何去做這件事?我更願意保持代碼大部分完整,並使用現有代碼找出解決方案。
感謝
這是什麼結果運行此代碼?你有任何錯誤? –
正確的方法讀取和標記,我只是不知道如何循環我的數組以便通過這些方法inialised。 – Dawson