【问题标题】:java.lang.ArrayIndexOutOfBoundsException ,String Arrayjava.lang.ArrayIndexOutOfBoundsException ,字符串数组
【发布时间】: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

标签: java android arrays


【解决方案1】:

看起来您正试图反转您的 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]);

这样你可以添加任意数量的东西

【讨论】:

  • 我希望 aList 有自己的大小
  • List list = new ArrayList(); list.add(bListA[x]);这可能会做到,我检查一下并回来几分钟
【解决方案2】:

您声明了一个大小为零的数组。

String[] aList = new String[0];

这就是你有这个异常的原因。

你应该这样做:

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

【讨论】:

  • 我希望列表有自己的大小。
  • 正如@kapsym 提到的,使用 ArrayList 而不是 Array。
猜你喜欢
  • 1970-01-01
  • 2013-04-15
  • 2013-11-19
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
相关资源
最近更新 更多