gpt4 book ai didi

java - 2 人掷硬币

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

我正在尝试创建一个 Java 程序来掷两枚硬币,看看谁赢了掷硬币。它提示用户进行多次抛硬币。如果第一个玩家正面,第二个玩家反面,那么它应该输出“Player 1 Wins!”反之亦然。如果两个玩家都有正面或反面,那么它应该输出“Tie.”。最后,它应该跟踪每个玩家的获胜次数,并在抛完所有硬币后输出获胜率。感觉抛硬币部分是可以的,但是当它显示每个玩家的最终分数时,分数总是不对。谁能找出问题所在?

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;

关于java - 2 人掷硬币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12994048/

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