2017-09-11 6 views
-1

私は複数の列を持つ生のフォルダの中にcsvファイルを持っていますが、私が望むものではないcsvファイルのすべてのデータを生成するように見える最初の列から読み取ることができます次を読み取ろうとするとき、私は得る:Androidアプリのcsvファイル取得java.lang.ArrayIndexOutOfBoundsException:長さ= 1; index = 1

OrganisationID OrganisationCode 

1421   RV9HE 

ことができます:

java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 

私は以下のコードを書くためのさまざまな方法を試してみましたが、私は同じ結果を得続ける、ここでcsvファイルの抜粋です誰でも私が間違っているところへ、そしてなぜ私はどうしたらいいのか、私に助言してください。

Caused by:java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 ? 
私はこれで私の髪を引っ張ってる

、それはcsvファイルが何の列を持っていないと私はcsvファイルのヘッダから読んでいるだろうか?

private String OrganisationID; 
private String OrganisationCode; 

public String getOrganisationID() { 
    return OrganisationID; 
} 

public void setOrganisationID(String organisationID) { 
    OrganisationID = organisationID; 
} 

public String getOrganisationCode() { 
    return OrganisationCode; 
} 

public void setOrganisationCode(String organisationCode) { 
    OrganisationCode = organisationCode; 
} 
     while ((line = reader.readLine()) != null) { 

      String[] RowData = line.split(","); 

      String setId = RowData[0]; 
      String setCode = RowData[1]; 

      HospitalReader cur = new HospitalReader(); 
      cur.setOrganisationID(setId); 
      cur.setOrganisationCode(setCode); 

      this.add(cur); 
     } 
+0

https://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/

String csvFile = "xyz.csv"; BufferedReader br = null; String line = ""; String cvsSplitBy = ","; try { br = new BufferedReader(new FileReader(csvFile)); while ((line = br.readLine()) != null) { // use comma as separator String[] txt = line.split(cvsSplitBy); System.out.println(txt[0] + "....." + txt[1]); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } 

出力から取り出さ(、)?? :) – digidude

+0

あなたはどういう意味ですか?これは構文解析する前のcsvスニペットです。 – Jonas

+1

csvはカンマ区切りの値を表し、「1.0.0.0」、「1.0.0.255」、「16777216」、「16777471」、「AU」、「Australia」のようになります。 「1.0.1.0」「16777472」「16778239」「CN」「中国」 フォーマットが正常かどうかを確認しています。 – digidude

答えて

0

あなたはあなたの中に、CSVファイルをカンマを入れて、あなたが

OrganisationID OrganisationCode 
1421   RV9HE 

その後、同じファイルを使用したい

"OrganisationID","OrganisationCode",,,, 
"1421","RV9HE",,,, 

間、または場合で余分なラインとスペースを削除する必要があります分割方法への引数を変更する必要があります

String[] RowData = line.split("[ ]+"); 
+0

からのわずかに異なるあなたが入力として元のファイルを使用する場合は、更新の答えを参照してください。 Regexを使用して1つ以上のスペースで分割する必要があります –

+0

2行目のcur.setOrganisationCode(RowData [1])の周りにtryキャッチを置くと申し訳ありません。私は、ArrayIndexOutOfBoundsExceptionが、私がキャッチする必要があるとして、まだ正しくないはるかに優れているが、代わりにすべてのデータの2列を示す表示を、キャッチ。 – Jonas

0

私はあなたのコードに何か問題がこれだけあなたがあなたの入力に問題があった場合、発見することができるだろう期待しての例を与える表示されません。

入力内容(xyz.csv):

"OrganisationID","OrganisationCode" 
"1421","RV9HE" 

コード:それはコンマを持っていないときにスニペットのcsvコンテンツがどのように

"OrganisationID"....."OrganisationCode" 
"1421"....."RV9HE" 
+0

コンマを追加しても、私はまだjava.langを取得できません。ArrayIndexOutOfBoundsException:長さ= 1;上記のコードを使用してindex = 1、なぜ私は自分のコードとレイアウトが良いとマークダウンされていますか? – Jonas

関連する問題