我这里有一些代码
String array[]=new String[5];
for(int i=0;i<array.length;i++){
array[i]= "item "+String.valueOf(i);
i++;
}
这是我在应用程序崩溃后获得的日志消息
java.lang.IndexOutOfBoundsException : Invalid array range: 5 to 5
你们能解释一下为什么会这样吗?我只想声明一个数组并使用for循环初始化数组元素,只是不知道为什么我的代码不起作用。谢谢
答案 0 :(得分:3)
因为键索引比循环中的索引数组更多。
String array[]=new String[5];
for(int i=0;i<array.length;i++){
array[i]= "item "+String.valueOf(i);
}
答案 1 :(得分:2)
删除额外的i ++ ..除非你有一些目的,否则它已经多余了。
String array[]=new String[5];
for(int i=0;i<array.length;i++){
array[i]= "item "+String.valueOf(i);
//i++; //remove this.. it already redundant except you have some purpose
}
它的java.lang.IndexOutOfBoundsException : Invalid array range: 5 to 5
因为计数器已经超过你的字符串的大小而只有5 ..
使用ArrayList
代替
答案 2 :(得分:2)
这样做:
String array[]=new String[5];
for(int i=0;i<array.length;i++){
array[i]= "item "+String.valueOf(i);
}
第二个i ++导致您的索引超出范围。
答案 3 :(得分:1)
不要将'i'值增加两次,这会导致此问题。
var orderedBoomarks = WordDocument.Bookmarks.Cast<Bookmark>()
.OrderBy(d => d.Start).ToList();
您可以使用String array[]=new String[5];
for(int i=0;i<array.length;i++){
array[i]= "item "+String.valueOf(i);
//i++; //remove this..
}
或Array[]
来Collections
取代ArrayList<String>
。