gpt4 book ai didi

java - 剪刀石头布游戏

转载 作者:行者123 更新时间:2023-12-01 17:28:41 25 4
gpt4 key购买 nike

我是编程新手,我一直在尝试创建一个简单的剪刀石头布游戏。基本上,它使用 while 循环并询问用户是否要玩(或继续)。一旦他们不再想要,程序就必须打印出游戏总数、获胜次数、失败次数和获胜百分比。我已经让整个程序正常工作,除了它总是说获胜百分比是 0.0%,即使事实并非如此。我已经使用 if 语句来避免任何除以零的错误。我没有收到任何运行时或编译器错误,因此我要么丢失了某些内容,要么存在我找不到的逻辑错误。我想继续使用扫描仪。

import java.util.Scanner; 

public class RockPaperScissors {

/*
* Program allows user to play Rock, Paper and Scissors as many times as desired by entering Y until they enter N.
* Program will print amount of games played, amount lost, amount won and percentage won.
* User must enter "Y", "N", "Rock", "Paper" or "Scissors" with correct capitalization and spelling.
*/

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

int playerWins = 0;
int compWins = 0;
int gamesPlayed = 0;

while (true) {
System.out.println("Do you want to play Rock Paper Scissors (Y/N): ");
String play = input.nextLine();

// user terminates game and program prints number of wins, losses and percentage of wins.
if (play.equals("N")) {

System.out.println("You played a total of " + gamesPlayed + " matches against the computer");
System.out.println("The computer won " + compWins + " matches");
System.out.println("You won " + playerWins + " matches");

// 0% wins when no games are played.
if (gamesPlayed == 0) {
System.out.println("You won 0% of the time!");
break;

} else if (gamesPlayed > 0) {
double totalWins = (int)(playerWins / gamesPlayed) * 100;
System.out.println("You won " + totalWins + "% of the time!");
break;
}

} else if ((!play.equals("N")) && (!play.equals("Y"))) {
System.out.println("Invalid entry");
} else {

System.out.println("Welcome to Rock, Paper and Scissors!");
System.out.print("Select \"Paper\", \"Rock\" or \"Scissors\": ");
String decision = input.nextLine();
System.out.println("Your selection: " + decision);

// random number generator producing integer values between 1 to 3 for computer's choices.
// 1 is for Rock, 2 is for Paper and 3 is for Scissors.
int num = (int)(Math.random() * (3-0) + 1);

switch (num) {

// Computer picks Rock
case 1:
if (decision.equals("Rock")) {
System.out.println("Tie, you and the computer selected rock");
gamesPlayed++;
} else if (decision.equals("Paper")) {
System.out.println("You win, paper beats rock!");
gamesPlayed++;
playerWins++;
} else if (decision.equals("Scissors")) {
System.out.println("Computer wins, rock beats scissors!");
gamesPlayed++;
compWins++;
} else {
System.out.println(decision + " is not a valid input");
}
break;
case 2:
// computer picks Paper
if (decision.equals("Rock")) {
System.out.println("Computer wins, rock beats paper!");
gamesPlayed++;
compWins++;
} else if (decision.equals("Paper")) {
System.out.println("Tie, you and the computer selected paper");
gamesPlayed++;
} else if (decision.equals("Scissors")) {
System.out.println("You win, scissors beats paper");
gamesPlayed++;
playerWins++;
} else {
System.out.println(decision + " is not a valid input");
}
break;
case 3:
// computer picks Scissors
if (decision.equals("Rock")) {
System.out.println("You win, rock beats scissors");
gamesPlayed++;
playerWins++;
} else if (decision.equals("Paper")) {
System.out.println("Computer wins, scissors beats paper");
gamesPlayed++;
compWins++;
} else if (decision.equals("Scissors")) {
System.out.println("Tie, you and the computer selected scissors");
gamesPlayed++;
} else {
System.out.println(decision + " is not a valid input");
}
break;

}
}

}

}

}

最佳答案

问题出在double totalWins = (int)(playerWins/gamesPlayed) * 100;。由于 playerWinsgamesPlayed 都是整型(特别是 int 类型),Java 正在执行“整数除法”,它返回除法的商结果并忽略其余部分。因此,为了防止它这样做,您最好将该行更改为:

double totalWins = (playerWins * 100.0) / gamesPlayed;
// /------------------\
// This converts the `playerWins` to a `double` and does the division as you expect

关于java - 剪刀石头布游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13023082/

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