Java 方法放入for循环以重新启动循环
我是一名学生,正在编写纸牌游戏,我正在使用for循环来模拟绘制纸牌。我的“卡片组”是一个带有“卡片”节点的链接列表。每个“card”节点都有一个称为“used”的布尔变量,用于指示卡是否不再在组中。我希望我的循环迭代直到它到达随机卡,如果随机卡已经从卡组中移除,再次运行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(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。