4

我的一些代码有问题。我收到dd/mm/yyyy格式为字符串的日期,称为dateofQ.

我希望日期是yyyy_mm_dd,我正在使用 astring.split()到一个数组中,但它不会返回名为 myArr[3] 的第三个数组:

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

它返回myArr[1]and myArr[0],但是当我也添加时,我myArr[3]在运行时遇到问题:

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

4 回答 4

6

好吧,数组只有 3 个元素,并且myArr[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 个元素,并且您正在尝试访问第三个元素。即你会得到错误@ myArr[2]

你应该做的是你应该首先检查数组的长度然后访问它。如果无效数组拒绝它。

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

更好的方法可能是使用MadPorgrammer 的答案中指定的方式。

于 2012-10-04T07:40:36.790 回答