• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:最終配列にNULLが含まれる場合の対応について)

最終配列にNULLが含まれる場合の対応について

このQ&Aのポイント
  • 最終配列にNULLが含まれる場合の対応について質問があります。エラーが表示される状況と、原因がわからないためアドバイスをお願いします。
  • 最終配列にNULLが含まれる場合の対応に関してエラーが発生しています。エラーメッセージ「java.lang.ArrayIndexOutOfBoundsException: 1」と表示され、問題がどこにあるのかわからない状況です。アドバイスをお願いします。
  • 最終配列にNULLが含まれる場合の対処方法について質問があります。現在、BufferedReaderで1レコードずつ読み込んでいるソースでエラーが発生しており、原因がわかりません。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.4

>arrayline = line.split(","); を arrayline = line.split(",", 2); もしくは arrayline = line.split(",", -1); としたらどうでしょうか。 詳しくはAPIを読んでみてください。 http://docs.oracle.com/javase/jp/7/api/java/lang/String.html#split(java.lang.String, int)

yairi1106
質問者

お礼

ご回答どうもありがとございます。 配列が多い場合もありますので arrayline = line.split(",", -1);で解決しました。 以前から、色々調べていたのですが なかなか解決しなかったので 投稿してよかったです。 APIの方はブックマークに登録させていただきました。 今回はどうもありがとうございました。

その他の回答 (3)

回答No.3

以下のような入力ファイルで試してみると良い。3行目でカンマの無い行を拾ってエラーになる。 ---ここから--- 001-0010,北海道札幌市北区北十条西 001-0011,北海道札幌市北区北十一条西 001-0012北海道札幌市北区北十二条西 001-0013,北海道札幌市北区北十三条西 001-0014,北海道札幌市北区北十四条西 ---ここまで--- 以下のような入力ファイルでも同じ。3行目で空行を拾ってエラーになる。 ---ここから--- 001-0010,北海道札幌市北区北十条西 001-0011,北海道札幌市北区北十一条西 001-0013,北海道札幌市北区北十三条西 001-0014,北海道札幌市北区北十四条西 ---ここまで--- で、質問者さんは ---ここから--- 001-0010,北海道札幌市北区北十条西 001-0011,北海道札幌市北区北十一条西 001-0012,北海道札幌市北区北十二条西 001-0013,北海道札幌市北区北十三条西 001-0014,北海道札幌市北区北十四条西 ---ここまで--- というファイルでは上手く行って ---ここから--- 001-0010,北海道札幌市北区北十条西 001-0011,北海道札幌市北区北十一条西 001-0012,北海道札幌市北区北十二条西 001-0013,北海道札幌市北区北十三条西 001-0014,北海道札幌市北区北十四条西 ---ここまで--- というファイルでは失敗する、と悩んでいたのですよ。 見て判るよね?最後の行が「空行で、カンマが入ってない、文字列の長さが0の行だ」って事が。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

String A= arrayline[0] ; String B = arrayline[1] ; の前に 判定処理を入れればいいだけかと

yairi1106
質問者

お礼

ありがとうございます。 色々な処理方法を調べていたのですが なかなか解決せず投稿させていただきました。

回答No.1

テキストファイルの最後の行が「空行」の場合、 while((line = in.readLine()) != null) で、lineの内容は「null」ではなく「""」、つまり、長さ0の文字列になる。 その状態で arrayline = line.split(","); を行うと、lineの中に「,」が居ないので、arraylineは「要素数1の配列」になる。 その状態だと String A= arrayline[0] ; は成功するが String B = arrayline[1] ; は「要素番号が最大値を超える」ので「ArrayIndexOutOfBoundsException」のエラーになる。 当然だが、テキストファイルの途中に「,」が無い行が紛れ込んでいた時も、同じエラーが出る。 lineがnullの時にwhile文を終了するのは当然として、それ以外に「空行」や「カンマの居ない行」が現れたら、その行をスキップして次の行を処理するようにしないといけない。

yairi1106
質問者

お礼

ご説明どうもありがとうございます。 arrayline = line.split(",");で配列をカンマで 区切っていますので 症状はすぐに認識していたのですが ソースの書き方が分かりませんでした。

関連するQ&A