gpt4 book ai didi

java - 内部 while 循环永远不会完成

转载 作者:行者123 更新时间:2023-12-01 07:22:39 29 4
gpt4 key购买 nike

如何防止内部 while 循环无限运行?问题是,如果没有外部 while 循环,内部循环将毫无问题地运行。我知道它必须对外循环执行某些操作,但我无法弄清楚是什么导致了问题。

import java.util.LinkedList;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class Tester
{
static LinkedList<String> list1 = new LinkedList<String>();
static LinkedList<String> list2 = new LinkedList<String>();

private static void stringMethod()
{
Set<String> stringSet = new HashSet<String>();
Random random = new Random();
String flashCard ="";

int rand;

while (!list2.isEmpty()) {
if (list2.size() != 1) {
flashCard = list2.remove(random.nextInt(list2.size() - 1));
} else {
flashCard = list2.remove(0);
}

stringSet.add(flashCard);

while (stringSet.size() != 4) {
rand = random.nextInt(list1.size());
stringSet.add(list1.get(rand));
}
}
}

public static void main(String[] args)
{
for (int i = 0 ; i < 5; i++) {
list1.add("String " + i);
}

list2.addAll(list1);
stringMethod();
}
}

最佳答案

嗯,一旦 Set 的大小达到 5,内部循环就永远不会终止。list1 有 5 个元素,因此最终所有元素都会添加到 stringSet 中。很难看出你想在这里做什么,所以我无法建议如何修复它。

改变

while (stringSet.size() != 4)

while (stringSet.size() < 4)

将防止无限循环,但我不确定这是否是所需的逻辑。

关于java - 内部 while 循环永远不会完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31595581/

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