2015-12-15 66 views
1

我写了一个关于游戏模拟的程序,其中在纸牌游戏中的两个玩家P1和P2各自被给予10个编号从1-10的卡。他们每个人都需要按照任意顺序排列他们的牌,并将他们面朝下放在他的堆中。然后每个玩家从他的堆中取出最上面的牌并将其与他的对手进行比较。具有较大牌的玩家赢得这一回合。当玩家没有更多的牌时,得分越高的玩家赢得游戏。Java:迭代两个堆栈

我不得不实施与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!"); 

    } 

} 

回答

2

您需要添加在你的else子句括号。现在,count2 ++发生在else块之外,而不管if条件如何。

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

谢谢!那是一个非常愚蠢的错误 – Tia

+0

......其他条款。 – cantelope

+0

第二个不重要,因为只有一个命令正在运行。没有什么被跳过。 – Ryan