簡體   English   中英

Java:嘗試獲取鍵盤輸入並在 if/else 條件下對其進行評估,以將 boolean 值設置為 true 或 false

[英]Java: Trying to take keyboard input and evaluate it in an if/else condition to set a boolean value to true or false

我正在開發一個示例擲骰子游戲,該游戲擲骰子 10 次,除非被用戶輸入打斷。

我有一個基於兩個 boolean 值的 state 運行的 while 語句,其中一個是根據用戶輸入設置的。

我目前的進度如下。 任何建議都會有很大幫助!

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();
   }
}

嘗試根據單一職責原則分解代碼。 干凈的代碼,易於測試,更細粒度。

我做了一個快速的實現,遠不是最好的解決方案,但這只是為了舉例說明這樣的原則:

骰子 object,但我認為可以命名為 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);
    }
}

最后,這是主要的 class:

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();
    }
}

我希望它可以幫助您理解這樣的原理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM