我的一些代码存在问题。我收到的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)
答案 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的答案中指定的使用方式。