gpt4 book ai didi

java - 为什么这些java行会进入无限循环

转载 作者:行者123 更新时间:2023-12-01 11:20:20 26 4
gpt4 key购买 nike

我注意进行一些数组列表操作,但遇到了问题,创建了无限循环。有人可以解释一下为什么吗?

附:不用担心跟踪命令,我正在为 smartfoxserver 2x 实例创建自定义 java 扩展。

String deckOf4Array[] = new String[] {"AD","KD","QD","JD","10D","9D","8D","7D","6D","AH","KH","QH","JH","10H","9H","8H","7H","6H","AC","AS","KS"};
List<String> deckOf4List = new ArrayList<String>(Arrays.asList(deckOf4Array));

for(int n=0; n<4; n++)
{
int cardindex = new Random().nextInt(deckOf4List.size()-1);
trace("cardindex: " + cardindex);
for (ListIterator<String> iter = deckOf4List.listIterator(); iter.hasNext(); )
{
// Here goes infinite loop
trace("cardindex: " + cardindex);

if(cardindex == iter.nextIndex())
{
// Here goes manipulations
}
iter.remove();
}
}

最佳答案

您必须编辑 for 循环...

for (ListIterator<String> iter = deckOf4List.listIterator(); iter.hasNext(); iter.next())

nextIndex() 方法返回即将到来的索引,但是,它不会在迭代中移动光标。因此,如果您将 iter.next() 放入 for 循环中,它实际上会移动光标。在您的情况下,您没有移动光标,因此您继续迭代索引 0。

至于official documentation ...

下一个() -返回列表中的下一个元素并前进光标位置。

int nextIndex() -返回后续调用 next() 将返回的元素的索引。

关于java - 为什么这些java行会进入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31317958/

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