我写了一个关于游戏模拟的程序,其中一个纸牌游戏中的两个玩家P1和P2每个被给予10张编号为1-10的牌。他们每个人都需要按任意顺序排列他们的牌,并将他们面朝下放在他的堆里。然后每个玩家从他的堆中取出最顶层的牌并将其与对手进行比较。拥有较大牌的玩家获胜。当玩家没有更多的牌时,得分较高的牌将赢得比赛。
我必须使用Stack
来实现该程序,除了游戏的获胜者被错误地显示之外,一切都能正常运行。以下是问题所在的示例:
第1人的输入值: 2,4,9,10,1,7,3,8,5,6
第2个人的输入值: 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!");
}
}
答案 0 :(得分:2)
您需要在else子句周围添加括号。现在,count2 ++正在else块之外发生,无论if条件如何。
else {
System.out.println("Person 2 wins!");
count2++;
}