【エラー解決方法】Javaのsplit関数でArrayIndexOutOfBoundsExceptionが発生したときの対処法

こんにちは、湯本です。
 
先日、Javaのsplit関数を使って配列に格納したデータを1つずつ取得しようとしたところ、ArrayIndexOutOfBoundsExceptionが発生しました。わかっているようでわかっていなかったので、split関数の使い方をメモとして残します。
 
エラー発生時の環境は、下記の通りです。

Java
14

エラー内容

java.lang.ArrayIndexOutOfBoundsException

エラー発生時のソース

split関数を使ってカンマ区切りの文字列を配列に格納後、要素の数分繰り返し処理を行った際、3回目の繰り返し処理でArrayIndexOutOfBoundsExceptionが発生しました。

// カンマ区切りの文字列
String str = "Java,PHP,,,";
// 配列に格納
String[] strArry = str.split(",");
// 3回目でエラーが発生する
for (int i = 0; i < 5; i++ ) {
	System.out.println(strArry[i]);
}

変数strの文字列「Java」と「PHP」は、配列strArryに格納されますが、後続の空文字は配列に格納されませんでした。

エラー解決方法

// 配列に格納する際、第二引数を設定する
String[] strArry = str.split(",", -1); 

split関数の第二引数に負の値(-1)を設定すると、文字列に空文字が含まれていても配列に格納されます。詳しくは公式ドキュメントをご参照ください。

まとめ

CSVファイルなどの読み込みで要素の数が決まっているデータを扱う際は、split関数の第二引数に負の値を設定しておくことでエラーを回避できます。
 
では、また。
 
 
 
 
《関連記事》

CloudWatch
技術
2023.6.21(Web)

【エラー解決方法】JavaでHTTPステータス302が起きた際の対処法

#Java
 

技術
2022.12.21(Tue)

【エラー解決方法】Entity追加時にMappingException Unknown entityが発生!?を解決する方法

#Java #データベース#Java

技術
2019.4.23(Tue)

【エラー解決方法】SSLExceptionが発生!? を解決する方法

#プログラム#Java

記事をシェア
MOST VIEWED ARTICLES