Java 使用数组创建字符串

Java 使用数组创建字符串,java,arrays,split,Java,Arrays,Split,我的一些代码有问题。我收到一个日期,格式为dd/mm/yyyy的字符串,名为dateofQ 我希望日期为yyyy\u mm\u dd,我正在使用string.split()作为数组,但它不会返回名为myArr[3]的第三个数组: String[] myArr = dateofQ.split("\\/"); String dateFormat = String.format("%s_%s_%s",myArr[2],myArr[1],myArr[0]); 它返回myArr[1]和myArr[0],

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

我希望日期为
yyyy\u mm\u dd
,我正在使用
string.split()
作为数组,但它不会返回名为myArr[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)

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


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

看起来
myArr
的长度最多为2

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

插入

System.out.println(myArr.length);
紧接着:

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

这是一个简单的检查方法。

我可能遗漏了一些非常明显的东西,但你不能做一些像

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\u 03\u 08
数组索引超出边界异常:2
此错误意味着您的数组大小小于3个元素,并且您正在尝试访问第三个元素。i、 e.您将得到错误@
myArr[2]

您应该首先检查数组的长度,然后访问它。如果数组无效,请拒绝它

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

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

示例输入plz!我的意思是你在dateofQI中给出了什么?我已经尝试了你的代码,它对我有效。你确定日期真的是dd/mm/yyy格式吗?嗯。伙计们。同样,OP将其编辑为
myArray[2]
,而不是
myArr[3]
,但是其他人也在编辑它,并且它重写了他的编辑。:-\。他编辑它是为了引用你发布的
myArr[2]
。实际上,在他编辑它的时候,有人编辑了它,并重写了他的更改,所以我把它放回了。数组索引发生在
2
索引处,所以这不是解决他的问题的方法。好吧,OP确实说了myArr[3]。OP编辑了这篇文章,称之为myArr[2],但有人同时也在编辑他的文章,并重写了他的修改。我重新编辑了它,但它还没有被接受为编辑。他应该检查长度数组索引发生在2,因此数组中没有足够的元素。谢谢你这么做了。我以前从未听说过SimpleDateFormat(我是一个noob)。我确实需要添加import java.text.SimpleDataFormat和import java.text.ParseException以使其工作。再次感谢