Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ArrayIndexOutOfBoundsException,字符串数组_Java_Android_Arrays - Fatal编程技术网

java.lang.ArrayIndexOutOfBoundsException,字符串数组

java.lang.ArrayIndexOutOfBoundsException,字符串数组,java,android,arrays,Java,Android,Arrays,如何修复由以下原因引起的错误: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; in

如何修复由以下原因引起的错误: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++;
    }
}
String[]bListA=new B().bList;
int x;
int y=0;
String[]aList=新字符串[0];
布尔I;

对于(x=0;x您声明了一个大小等于零的数组

String[] aList = new String[0];
这就是为什么你有这个例外

您应该这样做:

String[] aList = new String[bListA.length()];

看起来你正试图扭转你的bList

在这里,您已声明大小为0的列表,因此无法向其中添加任何元素

String[] aList= new String[0];
因此,任何带有aList[1]等的内容都会给您带来错误

所以,如果你想逆转,就这么做吧

String[] aList= new String[bListA.length()];
然后在for循环中,您可以执行
aList[y]=bListA[x]

如果需要动态数组,也可以使用

List<String> list = new ArrayList<String>();
list.add(bListA[x]);
List List=new ArrayList();
列表.添加(bListA[x]);

通过这种方式,您可以添加任意数量的新字符串[bListA.length()];您的列表大小仅为0。我知道所有这些,我的朋友们,这不是answare,String[]aList=新字符串[bListA.length()]我希望列表有自己的大小,因为我想将其用于列表视图,您的列表大小仅为0。是的,我想在每次找到新的i时扩展该大小,如果不是,则它应该为零。您在下面的ZAhmeds回答中提到,如果
i
为真,您希望保存元素。因为您直接声明了
i
在循环的
之前,并且永远不要更改它,
aList
的长度要么为0
(I=false)
,要么始终与
bList的长度相同(I=true)
。你应该解释一下你使用的是什么,我想你的问题会更容易理解。你不能扩展数组,你只能给同一个变量分配一个新的、更大的容器。这段代码只创建了一个不能存储任何东西的容器(因为它的大小是0)因此,您尝试放入的所有内容都立即超出了范围。正如其他人所说,查看
ArrayList
我希望列表有自己的sizeList=new ArrayList();list.add(bListA[x]);这可能就可以了。我检查一下,然后再返回几分钟。我希望列表有自己的大小。正如@kapsym提到的,使用ArrayList而不是Array。