gpt4 book ai didi

Java:两个堆栈上的迭代

转载 作者:行者123 更新时间:2023-11-30 03:07:52 25 4
gpt4 key购买 nike

我编写了一个关于游戏模拟的程序,其中纸牌游戏中的两个玩家 P1 和 P2 各有 10 张牌,编号从 1 到 10。他们每个人都必须按任意顺序排列自己的卡片,并将它们面朝下放在自己的牌堆中。然后每个玩家从自己的牌堆中取出最上面的牌并将其与对手的进行比较。拥有较大牌的玩家在该回合获胜。当玩家没有更多牌时,得分较高的一方获胜。

我必须使用 Stack 来实现该程序,代码一切正常,只是游戏的获胜者显示错误。以下是问题所在的运行示例:

人物 1 的输入值: 2,4,9,10,1,7,3,8,5,6

第二个人的输入值: 7,9,8,2,10,5,1,6,3,4

示例输出:

第 1 个人获胜!第 1 个人获胜!第 1 个人获胜!第 1 个人获胜!第 1 个人获胜!2 人获胜!第 1 个人获胜!第 1 个人获胜!2 人获胜!2 人获胜!

玩家 2 是获胜者!

它实际上必须将第 1 个人显示为获胜者,但我不知道为什么第 2 个人被显示为获胜者。

这是代码:

  package stacks;
import java.util.*;
public class Ques3 {

public static void main(String[]args){
int i,j;

Scanner sc= new Scanner(System.in);

Stack<Integer> p1= new Stack<Integer>();

Stack<Integer> p2= new Stack<Integer>();

int count1=0;
int count2=0;



System.out.println("Person 1: ");

for(i=0; i<10; i++){
p1.push(sc.nextInt());
}

System.out.println("p1: "+p1);


System.out.println("Person 2: ");
for(j=0; j<10;j++){
p2.push(sc.nextInt());
}
System.out.println("p2: "+p2);

Iterator<Integer> it1 = p1.iterator();
Iterator<Integer> it2= p2.iterator();

while (it1.hasNext() && it2.hasNext()) {
if(p1.pop()>p2.pop()){
System.out.println("Person 1 wins!");
count1++;
}

else
System.out.println("Person 2 wins!");
count2++;

}

if(count1>count2){
System.out.println("Player 1 is the winner!");}
else
System.out.println("Player 2 is the winner!");

}

}

最佳答案

您需要在 else 子句周围添加括号。现在,无论 if 条件如何,count2++ 都发生在 else block 之外。

else {
System.out.println("Person 2 wins!");
count2++;
}

关于Java:两个堆栈上的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34301224/

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