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

完整代码:


  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,大小:1


List 中只剩下一个元素。


据我所知:索引 q 检查列表中最后一个元素之后的元素并获得 OutOfBound。


我怎样才能解决这个问题?


在类似的主题中,我找不到明确的答案,对于我的问题,请帮助。


当年话下
浏览 154回答 3
3回答

红糖糍粑

您有 q 等于 (t + 1) 已经超出范围,因此您必须检查 q 是否小于或等于列表大小以运行 while 循环以继续程序。if (q <= list.size()) {&nbsp; &nbsp; // Your while loop}

慕工程0101907

这应该可以解决问题。在列表中使用它之前,您需要检查索引:while&nbsp;(t&nbsp;<&nbsp;list.size()&nbsp;&&&nbsp;q&nbsp;<&nbsp;list.size()&nbsp;&&&nbsp;&nbsp;(list.get(t).contains("NORTH")&nbsp;&&&nbsp;list.get(q).contains("SOUTH")&nbsp;|| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.get(t).contains("SOUTH")&nbsp;&&&nbsp;list.get(q).contains("NORTH")&nbsp;|| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.get(t).contains("WEST")&nbsp;&&&nbsp;list.get(q).contains("EAST")&nbsp;|| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.get(t).contains("EAST")&nbsp;&&&nbsp;list.get(q).contains("WEST")))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java