2个玩家硬币翻转



我正在尝试创建一个Java程序,该程序可以翻转两枚硬币,以查看谁赢得了硬币翻转。它提示用户进行许多硬币翻转。如果第一个球员有头,第二个球员有尾巴,那么它应该输出"球员1获胜!"反之亦然。如果两个玩家同时具有头或尾巴,则应输出"领带"。最后,它应该跟踪每个球员的胜利数量,并在所有硬币翻转后输出获胜率。感觉就像硬币翻转零件有效,但是当它显示每个玩家的最终分数时,得分永远都不正确。谁能发现问题?

package coinflip;
import java.util.Scanner;
public class CoinFlip {
    public static void main(String[] args) {
        int flips;
        int flipscount=0;
        int p1score=1;
        int p2score=1;
        Scanner scan = new Scanner(System.in);
        System.out.println("How many flips: ");
        flips=scan.nextInt();
        CoinMethods Coins = new CoinMethods();
        while (flipscount!=flips)
        {
            flipscount++;
            Coins.flip();
            System.out.println(""+Coins.result()+"");
            if (Coins.p1isHeads()&&Coins.p2isTails())
            p1score++;
            if (Coins.p1isTails()&&Coins.p2isHeads())
            p2score++;
        }
        System.out.println("Player 1 won "+p1score+" times!");
        System.out.println("Player 2 won "+p2score+" times!");
    }
}

CoinMethods类看起来像:

package coinflip;
public class CoinMethods {
    private final int HEADS=0;
    private final int TAILS=1;
    private int p1face, p2face;
    public CoinMethods ()
    {
        flip();
    }
    public void flip()
    {
        p1face=(int) (Math.random()*2);
        p2face=(int) (Math.random()*2);
    }
    public boolean p1isHeads (){
        return p1face==HEADS;
    }
    public boolean p2isHeads (){
        return p2face==HEADS;
    }
    public boolean p1isTails (){
        return p1face==TAILS;
    }
    public boolean p2isTails (){
        return p2face==TAILS;
    }
    public String result()
    {
        String results;
        if (p1face==HEADS&&p2face==TAILS)
            {results="Player 1 wins!";
                }
        else
            if ((p1face==HEADS&&p2face==HEADS)||(p1face==TAILS&&p2face==TAILS))
            {results="Tie!";
               }
            else
            {results="Player 2 wins!";
                }
        return results;
    }
}

在我看来,您需要将分数初始化为零而不是一个:

int p1score=0;
int p2score=0;

最新更新