Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法放入for循环以重新启动循环_Java_Loops_Linked List - Fatal编程技术网

Java 方法放入for循环以重新启动循环

Java 方法放入for循环以重新启动循环,java,loops,linked-list,Java,Loops,Linked List,我是一名学生,正在编写纸牌游戏,我正在使用for循环来模拟绘制纸牌。我的“卡片组”是一个带有“卡片”节点的链接列表。每个“card”节点都有一个称为“used”的布尔变量,用于指示卡是否不再在组中。我希望我的循环迭代直到它到达随机卡,如果随机卡已经从卡组中移除,再次运行for循环(因为它将生成不同的随机数)。这可能吗 for(int i = 0; i < randomNumber.nextInt(deck.numberCards); i++){ etc... } for(int

我是一名学生,正在编写纸牌游戏,我正在使用for循环来模拟绘制纸牌。我的“卡片组”是一个带有“卡片”节点的链接列表。每个“card”节点都有一个称为“used”的布尔变量,用于指示卡是否不再在组中。我希望我的循环迭代直到它到达随机卡,如果随机卡已经从卡组中移除,再次运行for循环(因为它将生成不同的随机数)。这可能吗

for(int i = 0; i < randomNumber.nextInt(deck.numberCards); i++){
    etc...
}
for(int i=0;i
另外,我意识到一个显而易见的解决方案是从列表中实际删除节点,但我很好奇是否有一种方法可以做到这一点

Card card = null;
do{
    card = deck.get(randomNumber.nextInt(deck.numberCards));
} while(!card.used);
假设
deck
列表包含
Card
类的实例

Card picked = null;
while(picked = null) { /* keep itterating */ }
但请注意,一旦未使用的卡数减少,此循环将运行很长时间,最终将无法终止

您最好过滤使用过的卡片,并从结果列表中选择

List<Card> unusedCards =  deck.stream()
    .filter(c -> !c.used).collect(Collectors.toList());
List unusedCards=deck.stream()
.filter(c->!c.used).collect(collector.toList());

您需要将代码添加到问题中。不清楚你在问我们什么。如果你知道卡片的索引,为什么还要循环?@EvanKnowles
我的“卡片组”是一个带有“卡片”节点的链接列表
-没有随机访问。真正的问题是为什么不使用ArrayList。