gpt4 book ai didi

Java:尝试获取键盘输入并在 if/else 条件下对其进行评估,以将 boolean 值设置为 true 或 false

转载 作者:行者123 更新时间:2023-12-02 09:23:57 24 4
gpt4 key购买 nike

我正在构建一个示例掷骰子游戏,除非被用户输入中断,否则该游戏会掷骰子 10 次。

我有一个 while 语句,它根据两个 boolean 值的状态运行,其中一个值是根据用户输入设置的。

我目前的进度如下。任何建议都会有很大的帮助!

import java.util.Scanner;
import java.swing.JOptionPane;
import java.util.Random;


public class DiceGame
{
public static void main(String[] args)
{


Random rand = new Random();


int player1Wins = 0;
int player2Wins = 0;
int ties = 0;
int rollCount = 0;
boolean rollAgain = true;

while (rollCount < 10 && rollAgain)
{
int player1Dice = rand.nextInt(6) + 1;
int player2Dice = rand.nextInt(6) + 1;

if (player1Dice > player2Dice)
{
player1Wins++;
System.out.println("Player 1 wins!!");
}

else if (player2Dice > player1Dice)
{
player2Wins++;
System.out.println("Player 2 wins!!");
}

else
{
ties++;
System.out.println("It's a tie...");
}

rollCount++;
String answer;
Scanner keyboard = new Scanner(System.in);
System.out.println("Would you like to roll again? Press y for yes");
answer = keyboard.nextLine();

if (answer == "y")
{
rollAgain = true;
}

else
{
rollAgain = false;
}

}
System.out.println();
System.out.println("Player 1 Total wins: " + player1Wins);
System.out.println("Player 2 Total wins: " + player2Wins);
System.out.println("Total Ties: " + ties);
System.out.close();
}
}

最佳答案

尝试根据单一责任原则分解代码。干净的代码,易于测试,并且更加精细。

我做了一个快速实现,远不是最好的解决方案,但这只是为了举例说明这样的原则:

Dice 对象,但我认为可以命名为 Player

public class Dice implements Comparable<Dice> {

private int number;

public Dice(int number) {
this.number = number;
}

public int getNumber() {
return number;
}

@Override
public int compareTo(Dice o) {
return Integer.compare(number, o.number);
}
}

计数器 - 检查掷骰结果,显示获胜者并保留结果

public class Counter {

private int playerOneWins;
private int playerTwoWins;
private int ties;

public void check(Dice player1, Dice player2) {

if (player1.compareTo(player2) > 0) {
System.out.println("Player 1 wins!!");
playerOneWins++;
} else if (player2.compareTo(player1) > 0) {
System.out.println("Player 2 wins!!");
playerTwoWins++;
} else {
System.out.println("It's a tie...");
ties++;
}
}

public void showResults() {
System.out.println();
System.out.println("Player 1 Total wins: " + playerOneWins);
System.out.println("Player 2 Total wins: " + playerTwoWins);
System.out.println("Total Ties: " + ties);
System.out.close();
}
}

输入阅读器 - 知道如何获取用户的输入

public class InputReader {

private static final String YES = "y";

private Scanner keyboard = new Scanner(System.in);

public boolean askUser() {

System.out.println("Would you like to roll again? Press y for yes");

String answer = keyboard.nextLine();

return YES.equalsIgnoreCase(answer);
}
}

滚轮 - 创建数字/扔骰子

public class Roller {

private Random random = new Random();

public Dice roll()
{
return new Dice(random.nextInt(6) + 1);
}
}

最后,这是主类:

public class Game {

private static final int MAX_ROLLS = 10;

private Roller roller = new Roller();
private Counter counter = new Counter();
private InputReader inputReader = new InputReader();

public void start() {

int rolls = 0;
boolean continueRolling = true;

while (rolls <= MAX_ROLLS && continueRolling) {

Dice player1 = roller.roll();
Dice player2 = roller.roll();

counter.check(player1, player2);

rolls++;

continueRolling = inputReader.askUser();
}

counter.showResults();
}

public static void main(String[] args) {
new Game().start();
}
}

希望它能帮助你理解这个原理。

关于Java:尝试获取键盘输入并在 if/else 条件下对其进行评估,以将 boolean 值设置为 true 或 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58476736/

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