这几天得到ArrayIndexOutOfBoundsException https://docs.oracle.com/javase/7/docs/api/java/lang/ArrayIndexOutOfBoundsException.html.我知道这类问题已经在 #SO 上提出过。我试过 。
java.lang.ArrayIndexOutOfBoundsException: 长度=1;索引=1
Code
String[] Child_DOB = "KUSHAGRA (SON)-07/05/94AANVI (DAUGHTER)-12/06/00 VARENYA (SON) - 26/12/05";
ArrayList<String> children_List = new ArrayList<String>();
ArrayList<Integer> Length_List = new ArrayList<Integer>();
String Children_Details_str = "";
int i = 0;
while (i < Child_DOB.length) {
String name_dob = Child_DOB[i] + " " + Child_DOB[i + 1];//this line
if (i > 3)
Children_Details_str = Children_Details_str + "\n" + name_dob;
else
Children_Details_str = Children_Details_str + name_dob + " ";
children_List.add(name_dob);
Length_List.add(Child_DOB[i].length());
Length_List.add(Child_DOB[i + 1].length());
i = i + 2;
}
我可以知道实现我的目标的正确方法是什么吗?任何帮助将不胜感激
这是因为正如您指出的那样:
String name_dob = Child_DOB[i] + " " + Child_DOB[i + 1];//this line
假设你的元素中只有一个元素Child_DOB
数组,您将输入 while 循环,并使用i = 0
尝试访问i+1
即第一个元素。数组从第 0 个索引开始,因此访问索引 1 处的元素会抛出异常ArrayIndexOutOfBoundsException
。为了避免这种情况,一种选择是:
while (i < Child_DOB.length - 1) {//go until second last element
如果您的数组有偶数个元素,则这将起作用。如果您有奇数个元素,那么您会错过姓氏(根据您的逻辑,这应该没问题。)
如果你真的不想错过最后一个元素,你可以这样做:
if ((Child_DOB.length & 0X1) == 1) {
Length_List.add(Child_DOB[Child_DOB.length - 1].length());
//append to Children_Details_str.. better use StringBuilder here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)