【问题标题】:java.lang.ArrayIndexOutOfBoundsException: length=1; index=2 caused by IF conditionjava.lang.ArrayIndexOutOfBoundsException:长度=1; index=2 由 IF 条件引起
【发布时间】:2021-06-18 17:12:20
【问题描述】:

大家好

我正在创建应用程序,我需要从文本中获取一些数据。出于这个原因,我正在创建 Arraylist,它将被所需的数据填充,是从字符串“gh2 []”之前拆分而来的。我使用 IF 条件来确定所需的数据(gh2 [i].matches(“[0-9 ]+]). 填充 Array 后,我正在通过 StringBuilder 将 Array 转换为字符串,然后拆分此字符串。

我的问题是,当我想从拆分的字符串中回调第二个值时,我得到了这个错误:java.lang.ArrayIndexOutOfBoundsException: length=1;指数=2。 我不明白这个错误的原因,因为当我检查时,数组的大小显示为 23,当我在拆分之前回调字符串时,我可以看到它已被所需的数据填充。我试图改变 IF 条件,例如给出否定,然后一切正常,但数组没有被我需要的数据填满。请咨询如何解决此问题。 gh2 这是我的 这是我的程序,这是我在 Android Studio 中的第一个程序。

ArrayList<String> listawynikow = new ArrayList<String>(gh2.length);
for (int i = 0; i < gh2.length; i++) {
  if (gh2[i].matches("[0-9]+")) {
    listawynikow.add(gh2[i]);
  }
}

StringBuilder sb2 = new StringBuilder();
for (int j = 0; j < listawynikow.size(); j++) {
  sb2.append(listawynikow.get(j)).append(";").append("\n");
}
String wyniki1 = sb2.toString();
String[] WYNIKI = wyniki1.split(";");

【问题讨论】:

  • 我们需要确切地知道是哪一行导致了 ArrayIOOBEx。它甚至是粘贴代码中的一行吗?因为粘贴的代码虽然很奇怪(为什么将数组中的所有数据收集到一个列表中,然后收集到一个字符串构建器中,然后再次拆分?你在循环中运行),似乎没有任何特别的问题。如果 AIOOBEx 发生在这里,如果有的话,gh2 正在被另一个线程更改。
  • 请发布错误日志
  • 我所看到的,如果我给出不同的 IF 条件,那么 "if (gh2[i2].matches("[0-9]+"))" 例如我给出 "if (!gh2[ i2].matches("[0-9]+"))"。我将通过创建另一个字符串来纠正无意义的部分。
  • 您需要在此处提供更多信息,我们不知道是哪一行或变量实际产生了错误。

标签: java android arraylist


【解决方案1】:

好的,我终于解决了这个问题。

for(i2=0; i2<gh2.length;i2++) {
                         listawynikow.add(gh2[i2]); }
                    for(int j2=0; j2<listawynikow.size();j2++){
                        if (!gh2[j2].matches("[0-9]+")){
                            listawynikow.remove(gh2[j2])

感谢大家的帮助,感谢我的问题。

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2018-06-02
    • 1970-01-01
    • 2014-05-13
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    相关资源
    最近更新 更多