0

データから情報を解析し、JDBC を使用してデータベースに挿入しようとしています。ただし、そうしようとするとjava.lang.parseInt(UnknownSource)エラーが発生します。以下は、私がまとめたコードです。

public void testAddStation(String r){   
    long st = System.currentTimeMillis();
    String str = r;
    String row[]= str.split(",");
    Station s = new Station();
    s.setPrimaryID(row[0]);
    s.setSecondaryID(row[1]);
    s.setStationName(row[2]);
    s.setState(row[3]);
    s.setCountry(row[4]);
    s.setLatitude(Double.parseDouble(row[5]));
    s.setLongitude(Double.parseDouble(row[6]));
    s.setElevation(Double.parseDouble(row[7]));
    s.setMesoNetID(row[8]);
    s.setNetworkName(row[9]);
    s.setStatus(row[10]);
    s.setPrimaryProviderId(Integer.parseInt(row[11]));
    s.setPrimaryProvider(row[12]);
    s.setSecondaryProviderId(Integer.parseInt(row[13]));
    s.setSecondaryProvider(row[14]);
    s.setTertiaryProviderId(Integer.parseInt(row[15]));
    s.setTertiaryProvider(row[16]);
    s.setWims_Id(row[17]);
    //System.out.println(s.getStationName());
    //System.out.println(s.getPrimaryID());

    rep.addStation(s);
    N=N+1;
    long et = System.currentTimeMillis();
    System.out.println("total station created: " + N + "\tinsert per row: "+(et - st));
}

以下は、コンソール ウィンドウに表示されるエラー メッセージです。

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at karki.jdbc.repo.Check.testAddStation(Check.java:40)
at karki.jdbc.repo.CSVFile.readCSV(CSVFile.java:36)
at karki.jdbc.repo.CSVFile.listFiles(CSVFile.java:20)
at karki.jdbc.repo.CSVFile.listStationCSV(CSVFile.java:59)
at karki.jdbc.repo.CSVFile.main(CSVFile.java:82)

ここで私が間違っている可能性があることについて、誰かが光を当てることができますか?

4

2 に答える 2

0

例外情報に基づいて、問題は次のいずれかの行にある可能性が高いようです。

s.setPrimaryProviderId(Integer.parseInt(row[11]));
s.setPrimaryProvider(row[12]);
s.setSecondaryProviderId(Integer.parseInt(row[13]));
s.setSecondaryProvider(row[14]);
s.setTertiaryProviderId(Integer.parseInt(row[15]));
s.setTertiaryProvider(row[16]);

具体的には、例外が行 [11] 行 [13] または行 [15] が実際には数値ではなく空の文字列 "" であると不平を言う可能性が最も高いため、Integer.parseInt() コードを含むもの。

値を設定する前に有効な数値をテストし、数値以外の場合はデフォルトの整数値をそこに配置できます。

解析するさまざまなフィールドすべてで、CSV ファイルの有効性をチェックしましたか?

于 2013-10-17T01:19:43.157 に答える