使用数组创建一个字符串

时间:2012-10-04 07:19:35

标签: java arrays split

我的一些代码存在问题。我收到的dd/mm/yyyy格式的日期为名为dateofQ的字符串。

我希望日期为yyyy_mm_dd,我在数组中使用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 个答案:

答案 0 :(得分:6)

好吧,数组只有3个元素,而myArr[3]正在尝试获取第四个元素(请记住,数组是零索引的)。

要获取第三个元素,请使用myArr[2]

答案 1 :(得分:2)

看起来myArr的长度最多为2。

请检查以确保myArr.length不是至少3。

插入

System.out.println(myArr.length);

之后:

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

是检查此内容的简便方法。

答案 2 :(得分: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

答案 3 :(得分:0)

ArrayIndexOutOfBoundsException: 2此错误表示您的大小小于3个元素,并且您尝试访问第三个元素。即,您将收到错误@ myArr[2]

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

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

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