6

Stack Overflow ユーザーの皆さん、こんにちは。今晩、私が作成した Java プログラムについて支援を求めて訪問します。私はJavaに比較的慣れていないので、このトピックに関する無知を許してください。「じゃんけん」「紙」「はさみ」ゲームの Java プログラムを作成しましたが、ステートメントの 1 つにエラーがあるようです。

import java.util.Scanner;

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

    int playerHumanWins = 0;
    int playerComputerWins = 0;
    int numberOfTies = 0;
    int computerResult;

    Scanner input = new Scanner(System.in);

    while(true) {

        String startGame;
        String playerHuman;
        String playerComputer = " ";

        System.out.print("Do you want to play \"Rock\", \"Paper\", \"Scissors\"? (Y/N): ");
        startGame = input.nextLine();

        startGame = startGame.toUpperCase();

        if(startGame.equals("N")) {
            System.out.println("NO!");
            break;
        }
        else if(! startGame.equals("Y")) {
            startGame = startGame.toLowerCase();
            System.out.println("Sorry, " + startGame + " is not a valid entry...");               
        }
        while(startGame.equals("Y")) {
            System.out.print("Please choose \"Rock\", \"Paper\", or \"Scissors\": ");
            playerHuman = input.nextLine();

            computerResult = (int)(Math.random() * 3);

            playerHuman = playerHuman.toUpperCase();

            if(computerResult == 1) {
                playerComputer = "ROCK";
            }
            else if(computerResult == 2) {
                playerComputer = "PAPER";
            }
            else if (computerResult == 3) {
                playerComputer = "SCISSORS";
            }

            switch (playerHuman) {
                case "ROCK" :
                    if(playerComputer.equals(playerHuman)) {
                    System.out.println("Tie you both picked \"ROCK\"");
                    numberOfTies++;
                }
                    else if(playerComputer.equals("PAPER")) {
                        System.out.println("Computer wins!");
                        playerComputerWins++;
                    }
                    else {
                        System.out.println("You win, \"ROCK\" beats " + "\"" + playerComputer + "\"");
                        playerHumanWins++;
                        return;
                    }
                    break;
                case "PAPER" :
                    if(playerComputer.equals(playerHuman)) {
                    System.out.println("Tie you both picked \"PAPER\"");
                    numberOfTies++;
                }
                    else if(playerComputer.equals("ROCK")) {
                        System.out.println("You win, \"PAPER\" beats " + "\"" + playerComputer + "\"");
                        playerHumanWins++;
                        return;
                    }
                    else {
                        System.out.println("Sorry, the computer won!");
                        playerComputerWins++;
                    }
                    break;
                case "SCISSORS" :
                    if(playerComputer.equals(playerHuman)) {
                    System.out.println("Tie you both picked \"SCISSORS\"");
                    numberOfTies++;
                }
                    else if(playerComputer.equals("PAPER")) {
                        System.out.println("You win, \"SCISSORS\" beats " + "\"" + playerComputer + "\"");
                        playerHumanWins++;
                        return;
                    }
                    else {
                        System.out.println("Sorry, the computer won!");
                        playerComputerWins++;
                    }
                    break;
                default:
                    playerHuman = playerHuman.toLowerCase();
                    System.out.println("Sorry, " + playerHuman + " is not a valid entry..."); 
                    break;
            } 
        }
    }         
}
}

私が直面している問題は、勝利の計算に関連しています。プログラムを実行して、勝つまでロックを繰り返し入力すると、出力はのようになります

私の質問は、ロックを演奏しているときに空のコールバックが返されるのはなぜですか?

*また、初心者を助けるための他の提案を喜んで指摘していただければ、それは素晴らしいことです. *

4

3 に答える 3

5

Math.random() * 3は 0 以上 3 未満の数値です。

int にキャストした後は、0、1、または 2 になります。

        if(computerResult == 0) {
            playerComputer = "ROCK";
        }
        else if(computerResult == 1) {
            playerComputer = "PAPER";
        }
        else if (computerResult == 2) {
            playerComputer = "SCISSORS";
        }

提案:

簡潔にしてください。あなたは変えることができます

String startGame;
startGame = input.nextLine();
startGame = startGame.toUpperCase();

String startGame = input.nextLine().toUpperCase();

スクロールしてスクロールする必要がない場合は、より読みやすくなります。

また、equalsIgnoreCase()存在することを知ってください。

于 2013-10-31T04:48:32.267 に答える
1

これは完全な初心者向けではありませんが、次のコードを使用してゲームをモデル化します。

enum Choice { ROCK, PAPER, SCISSORS }

enum Result { COMPUTER_WINS, TIE, HUMAN_WINS }

Result decide(Choice computer, Choice human) {
  if (human == computer) {
    return Result.TIE;
  } else if (…) {
    …
  }
}

このようにして、ゲーム自体を処理するコードの一部を作成し、他のコードでユーザー インタラクションを処理します。

于 2013-10-31T05:02:18.830 に答える