4

コードの一部に問題があります。dd/mm/yyyyという文字列の形式で日付を受け取っていますdateofQ

日付を にしたいのですが、配列にyyyy_mm_dda を使用していますstring.split()が、myArr[3] という 3 番目の配列が返されません。

String[] myArr = dateofQ.split("\\/");
String dateFormat = String.format("%s_%s_%s",myArr[2],myArr[1],myArr[0]);

と を返しますが、追加するmyArr[1]と、実行時に問題が発生します。myArr[0]myArr[3]

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    at ReadFile.main(ReadFile.java:34)
4

4 に答える 4

6

配列には3つの要素しかなく、 4番目myArr[3]の要素を取得しようとしています(配列はゼロインデックスであることに注意してください)。

3番目の要素を取得するには、を使用しますmyArr[2]

于 2012-10-04T07:21:10.923 に答える
2

の長さmyArrはせいぜい2のようです。

myArr.length少なくとも 3 でないことを確認してください。

挿入

System.out.println(myArr.length);

直後の:

String[] myArr = dateofQ.split("\\/");

これを確認する簡単な方法です。

于 2012-10-04T07:24:11.433 に答える
2

私はおそらく本当に明白な何かを見逃していますが、次のようなことはできませんでした...

try {
    String dateofQ = "08/03/1972";
    SimpleDateFormat in = new SimpleDateFormat("dd/MM/yyyy");
    SimpleDateFormat out = new SimpleDateFormat("yyyy_MM_dd");

    dateofQ = out.format(in.parse(dateofQ));
    System.out.println(dateofQ);
} catch (ParseException ex) {
    ex.printStackTrace();
}

どちらが出る1972_03_08

于 2012-10-04T07:38:11.873 に答える
0

ArrayIndexOutOfBoundsException: 2このエラーは、3要素未満のサイズの配列があり、3番目にアクセスしようとしていることを意味します。つまり、エラー@が発生しますmyArr[2]

最初に配列の長さを確認してからアクセスする必要があります。無効な配列の場合は拒否します。

if(myArr.length==3)//Process else you need to reject

より良い方法は、MadPorgrammerの回答で指定された方法を使用することです。

于 2012-10-04T07:40:36.790 に答える