为了账号安全,请及时绑定邮箱和手机立即绑定

While 循环,IndexOutOfBoundsException:索引:1,大小:1

While 循环,IndexOutOfBoundsException:索引:1,大小:1

当年话下 2021-08-13 15:49:26
完整代码:  public static String[] dirReduc(String[] arr) {    LinkedList<String> list = new LinkedList<>(Arrays.asList(arr));    for (int t = 0; t < list.size(); t++) {        for (int q = t + 1; q < list.size() ; q++) {        while (list.get(t).contains("NORTH") && list.get(q).contains("SOUTH") ||                list.get(t).contains("SOUTH") && list.get(q).contains("NORTH") ||                list.get(t).contains("WEST") && list.get(q).contains("EAST") ||                list.get(t).contains("EAST") && list.get(q).contains("WEST"))            for (int i = 0; i < list.size(); i++) {                for (int k = i + 1; k < list.size(); k++) {                    if (list.get(i).contains("NORTH") && list.get(k).contains("SOUTH") ||                        list.get(i).contains("SOUTH") && list.get(k).contains("NORTH") ||                        list.get(i).contains("WEST") && list.get(k).contains("EAST") ||                        list.get(i).contains("EAST") && list.get(k).contains("WEST")) {                        list.remove(i);                        list.remove(k - 1);                    }                }                }            }        System.out.println(list);    }    return null;}删除循环工作正常。我关于while循环的问题:在此字段的 while 循环中: list.get(t).contains("WEST") && list.get(q).contains("EAST") ||我有:IndexOutOfBoundsException:索引:1,大小:1List 中只剩下一个元素。据我所知:索引 q 检查列表中最后一个元素之后的元素并获得 OutOfBound。我怎样才能解决这个问题?在类似的主题中,我找不到明确的答案,对于我的问题,请帮助。
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您有 q 等于 (t + 1) 已经超出范围,因此您必须检查 q 是否小于或等于列表大小以运行 while 循环以继续程序。


if (q <= list.size()) {

    // Your while loop

}


查看完整回答
反对 回复 2021-08-13
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

这应该可以解决问题。

在列表中使用它之前,您需要检查索引:

while (t < list.size() && q < list.size() &&  (list.get(t).contains("NORTH") && list.get(q).contains("SOUTH") ||
                list.get(t).contains("SOUTH") && list.get(q).contains("NORTH") ||
                list.get(t).contains("WEST") && list.get(q).contains("EAST") ||
                list.get(t).contains("EAST") && list.get(q).contains("WEST")))


查看完整回答
反对 回复 2021-08-13
  • 3 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信