完整代码: 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
}
慕工程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")))
添加回答
举报
0/150
提交
取消