CSVファイルの仕様は次のとおりです。
- キー – カテゴリ:ID として構造化されます。ここで、ID はシーケンス番号です。これを 2 つの部分に分割する (または使用する) 必要はありません。キーを単一の一意の値として扱うだけです。
- ブランド – 製品のメーカー
- モデル – 製品のモデル名
- WeightInKg – 最も近い kg に丸められた製品の重量
- 価格 – 小数点以下 2 桁までの商品の販売価格 (2 dp)
そして、私は各行をトークン化するためにこのコードを持っています:
public WarehouseItem(String warehouseItem) {
String key, brand, model;
int weightInKG;
double price;
StringTokenizer strTok;
strTok = new StringTokenizer(warehouseItem);
try {
key = strTok.nextToken();
brand = strTok.nextToken();
model = strTok.nextToken();
weightInKG = Integer.parseInt(strTok.nextToken());
price = Double.valueOf(strTok.nextToken());
}
catch (Exception e) {
throw new IllegalStateException("CSV row had invalid format");
}
}
実行しようとすると、CSV ファイルに対して IllegalStateException が発生します。
Exception in thread "main" java.lang.IllegalStateException: CSV row had invalid format
at WarehouseItem.<init>(WarehouseItem.java:23) // throwing exception
at main.loadRecords(main.java:63) // records[numRows] = new WarehouseItem(warehouseItem); storing into array of objects
at main.main(main.java:26) // loadRecords(); calling the function which reads a line
at main.loadRecords(main.java:78) // main(null); recursing back to main
at main.main(main.java:26) // loadRecords(); calling the function which reads a line
CSV ファイルの行の例を次に示します。
カウチ:6,Fremarc,Deluxe,101,1871.7
キーがシーケンス番号として ID を持っているためでしょうか?? またはそれはまったく問題ではありませんか?? 私は混乱していて、助けていただければ幸いです