【发布时间】:2017-08-10 11:34:45
【问题描述】:
如何修复错误原因:java.lang.ArrayIndexOutOfBoundsException: length=0;索引=0:
我尝试简化代码,例如布尔值 I 有时是真或假,不管它们是否正常工作。
我不知道的是如何从 bListA 声明数组 aList 就像这部分代码一样:aList[y]=bListA[x]
`
B 类:
public String[] bList ={"a","b","c"};
A 类:
String[] bListA=new B().bList;
int x;
int y = 0;
String[] aList= new String[0];
boolean I;
for (x=0;x<bListA.length;x++){
if(I){
aList[y]=bListA[x];
y++;
}
}
显示给我的错误是:由以下原因引起: java.lang.ArrayIndexOutOfBoundsException:长度=0;索引=0 当你点击它时,android studio 会带你去:
aList[y]=bListA[x]
如何修复这样的错误?请注意,我不想使用 try and catch,因为如果每次我都是真的,那么我会得到一个错误,我必须向按摩显示抱歉!但我永远得到错误!只有当您认为错误会出现一次时,这才是一个好主意。
【问题讨论】:
-
String[] aList= new String[bListA.length()];
-
您的 aList 大小仅为 0。
-
我知道我所有的朋友,这不是答案,String[] aList= new String[bListA.length()] 我希望 aList 有自己的大小,因为我想使用它对于列表视图,您的 aList 大小仅为 0。是的,我想在每次找到新的 I 时都增加这个大小,如果不是,它应该是零。
-
您在 ZAhmeds 答案下方的评论中提到,如果
I为真,您希望保存元素。由于您直接在for-loop之前声明I并且从不更改它,因此aList的长度将是0(I = false)或始终与bList (I = true)的长度相同。您应该解释一下您使用I的目的,我认为您的问题会更容易理解。 -
你不能扩展一个数组,你只能将一个新的、更大的容器分配给同一个变量。此代码仅创建一个不能存储任何内容的容器(因为它的大小为 0),因此您尝试放入其中的所有内容都会立即超出范围。正如其他人所说,请查看
ArrayList