この問題は少し説明が必要です。できるだけ簡潔にしようと思います。
Can オブジェクトの配列を初期化しようとしています。これらのオブジェクトには、名前、製造元の 2 つのフィールド (両方とも文字列) しかありません。
次の形式の CSV ファイルから読み取って、フィールドを初期化しようとしています。
トマト、ハインツ
豆類、ジェリー
(行間にスペースはありません。このサイトでは何らかの理由でそのようにフォーマットされています)
各行の最初の文字列は名前にしたい値で、2 番目はメーカーです。
そこで、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");
}
しかし、明らかにこれは機能しません。誰も私がこれについてどうすればよいか提案できますか? コードをほとんどそのままにして、既存のコードを使用して解決策を見つけたいと思います。
ありがとう