java如何解决这个索引越界问题
这是我的代码,当我尝试这一点时,我得到了索引越界异常。请建议
while (rs.next()) {
String url = rs.getString("rssUrl");
List<String> test = new ArrayList<String>();
test.add(url);
//List<List<String>> output = new ArrayList<List<String>>();
for (int start = 0; start < test.size(); start += 5) {
List<String> group = test.subList(start, start+5);
System.out.println(group);
//System.out.println(output);
System.out.println("split");
}
}
# 1 楼答案
尝试在for循环中修复您的情况:
问题是这条线
超出范围,因为您没有检查
start + 5
是否小于列表大小# 2 楼答案
列表测试在每次迭代中只有一项。因此,
start + 5
比test大。大小()。这会导致IndexOutOfBoundException,如JavaDoc所述:# 3 楼答案
我认为这是问题所在:
start+5
将超出最后一项的列表范围# 4 楼答案
你在这一行中获得了IndexOutOfBoundsException
您正试图访问只有1个元素的列表中的第5个元素((start=0)+5)
我不知道你想做什么,但你需要重新考虑你的代码
# 5 楼答案
在for循环中,在每次迭代后,将start变量递增5。for循环中定义的条件将在每次迭代之前检查索引deo是否超出列表的总大小。但是在for循环中,您再次将start变量增加5,并使用该变量访问列表,这可能超出列表的大小,从而导致越界异常
例如,列表的大小是17,您正在进行第二次迭代,所以您进入for循环,开始时的值是15。但在for循环中,再次将变量增加5,使其变为20。如果尝试访问列表的第20个元素,它肯定会抛出一个越界异常
编辑:
# 6 楼答案
你对
subList
的工作原理感到困惑subList
将从列表中返回子列表。所以如果你有一个包含10个元素的List<String>
,你说给我一个从0到4的subList
,它会返回一个包含5个元素的List<String>
您试图做的是执行某种
substring
,这是不正确的。你的循环对于subList
来说是无用的,因为在第一次迭代中,只有一个元素,所以你马上就会越界(正如你已经展示的那样)。你刚杀了一只小猫即使我在开头加上五到六个元素,你的for循环在这个方面仍然是错误的。比如说,
输出:
所以你可以看到你的
subList
是如何失败的,你的逻辑是错误的实现一个
subString
,但确保在断开添加到List<String>
中的String
时,不要超出字符串的长度