gpt4 book ai didi

java - 比较两个 ArrayList 索引时出现 IndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 13:16:54 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,在随机生成的 ArrayList 中找到最长的数字序列。 20,然后在括号中标记该序列。但是,当我尝试比较 ArrayList 的索引的两个值时在 for 循环中,和 IndexOutOfBoundsException发生了,我不确定问题出在哪里。

ArrayList<Integer> dieTosses = new ArrayList<Integer>();
for(int i = 0; i < 20; i++)
{
dieTosses.add((int) (Math.random()*6)+1);
}
int longestRun = 1;
int runTracker = 1;
for(int i = 0; i < dieTosses.size(); i++) //The problem occurs here
{
if(dieTosses.get(i) == dieTosses.get(i+1))
{
longestRun++;
}
else if(longestRun > runTracker);
longestRun = runTracker;
}
System.out.println(dieTosses);
System.out.println(longestRun);

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 20, Size: 20
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at DieTossing.DieTosser.main(DieTosser.java:18)

最佳答案

您遇到问题

if(dieTosses.get(i) == dieTosses.get(i+1)) 

因为在 for 循环的最后一次迭代中(对于值 19,您尝试访问 dieTosses.get(i+1) 处的位置 20。该位置不存在,因为它们通过 0 进行索引-19。

所以试试这个。

 for(int i = 1; i < dieTosses.size(); i++) 
{
if(dieTosses.get(i-1) == dieTosses.get(i))
{
longestRun++;
}
else if(longestRun > runTracker);
longestRun = runTracker;
}

或者

 for(int i = 0; i < dieTosses.size()-1; i++) 
{
if(dieTosses.get(i) == dieTosses.get(i+1))
{
longestRun++;
}
else if(longestRun > runTracker);
longestRun = runTracker;
}

您喜欢哪个版本

关于java - 比较两个 ArrayList 索引时出现 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22395442/

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