gpt4 book ai didi

java - java中for循环中的越界异常打印小于数组列表大小

转载 作者:行者123 更新时间:2023-12-01 06:21:57 25 4
gpt4 key购买 nike

即使我在 for 循环中明确指定我希望它打印到 arraylist.size,终端也会返回 OutOfBounds 异常

public static void PrintPlayList() {
int lengthsongs = songs.size();
int lengthadds = adds.size();
int amountadds = 0;

for (int i = 0; i < lengthsongs; i++) {
playlist.add(songs.get(i));
if (amountadds < lengthadds) {
playlist.add(adds.get(amountadds));
amountadds++;
}
}

int lengthplaylist = playlist.size();
for (int i = 0; i < lengthplaylist; i++) {
System.out.println(songs.get(i).toString());
System.out.println(adds.get(i).toString());
}
}

And this is what the compiler returns: How is it possible? How can I fix it?

java.lang.IndexOutOfBoundsException: Index: 18, Size: 18
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Main.PrintPlayList(Main.java:153)
at Main.Interface(Main.java:55)
at Main.main(Main.java:34)

最佳答案

我认为问题出在这里:

for (int i = 0; i < lengthplaylist; i++) {
System.out.println(songs.get(i).toString());
System.out.println(adds.get(i).toString());
}
代码中的

lengthplaylist 可以大于 lengthsongs。并且您使用 for 循环从 0 到 lengthplaylist 而不是 lengthsongs

您还应该注意 adds.get(i).toString() 因为要执行此操作,所有长度都必须相同。

您可以在循环中为它们使用不同的变量,如下所示:

for (int i = 0,j=0; i < lengthsongs && j<lengthadds; i++,j++) {
System.out.println(songs.get(i).toString());
System.out.println(adds.get(j).toString());
}

关于java - java中for循环中的越界异常打印小于数组列表大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53068712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com