0

私のコードの何が問題なのか本当にわかりません。ユーザーの選択を取り入れ、ランダムなコンピューターの選択と比較し、結果を表示することで、コンピューターに対してじゃんけんを行うことになっています。

3 番目と 4 番目のメソッドの return ステートメントがないという 2 つのエラーが発生します。また、エラーを修正せずに実行すると、60 行目から始まるネストされた if ステートメントは、2 つの println ステートメントのうちの 1 つしか出力しません。

import java.util.Random;
import java.util.Scanner;
public class Chapter5ProjectPart2 {

    public static void main(String[] args) {

    Random generator = new Random();
    Scanner keyboard = new Scanner(System.in);

    int userNum;
    int compNum;
    String userChoice = "";
    String compChoice = "";
    int rnum;
    int result = 0;
    boolean keepPlaying;
    int input = 1;


    do
    {   
        compNum = generator.nextInt(2)+1;
        compChoice = numToChoice(compNum);

        menu();

        userNum = keyboard.nextInt();
        userChoice = numToChoice(userNum);
        keyboard.nextInt();

        System.out.println();
        System.out.println("you chose " + userChoice);
        System.out.println("the computer chose " + compChoice);

        result = resultCheck(userNum, compNum);


        if (result == 1) // user wins
        {
            if (userNum == 1) //user won choosing rock
            {
                System.out.println("rock beats scissors");
                System.out.println("you win");
            }
            else if (userNum == 2) //user won choosing paper
            {
                System.out.println("paper beats rock");
                System.out.println("you win");
            }
            else if (userNum == 3)  //user won choosing scissors
            {
                System.out.println("scissors beats paper");
                System.out.println("you win");
            }
        }
        else if (result == 3) //user loses
        {
            if (userNum == 1)  //user lost choosing rock
            {
                System.out.println("paper beats rock");
                System.out.println("you lose");
            }
            else if (userNum == 2)  //user lost choosing paper
            {
                System.out.println("scissors beats paper");
                System.out.println("you lose");
            }
            else if (userNum == 3)  //user lost choosing scissors
            {
                System.out.println("rock beats scissors");
                System.out.println("you lose");
            }
        else if (result == 2) //draw
            System.out.println("draw");
        }

        System.out.println("would you like to play again?");
        System.out.println("1 = yes");
        System.out.println("2 = no");
        input = keyboard.nextInt();
        keepPlaying = play(input);

    } while (keepPlaying == true);

}


// method 1 (menu)
public static void menu()
{
System.out.println("Enter your choice of rock, paper, or scissors\n" + "1 = rock\n" + "2 = paper\n" + "3 = scissors");
}

// method 2 (result check)
public static int resultCheck(int userNum, int compNum)
{
    if (userNum == 2 && compNum == 1)
        return 1;
    else if (userNum == 1 && compNum == 3)
        return 1;
    else if (userNum == 3 && compNum == 2)
        return 1;
    else if (userNum == compNum)
        return 2;
    else
        return 3;
}

// method 3 (converting number choice to rock/paper/scissors
public static String numToChoice(int num)
{
    if (num == 1)
        return "rock";
    else if (num == 2)
        return "paper";
    else if (num == 3)
        return "scissors";
}

//method 4 (play again)
public static boolean play(int input)
{
    if (input == 1)
        return true;
    else if (input == 2)
        return false;
}


}
4

6 に答える 6

0

Java メソッドは、return と記載されていない限り、値を返さなければなりませんvoid

playメソッドで が 1 または 2 でない場合、inputJava は値を返しません。これは Java でのコンパイルを許可しません。

numToChoiceメソッドで、が 1、2、または 3 でない場合、numJava は値を返しません。これは Java でのコンパイルを許可しません。

else「予期しない」場合に値を返すために close を追加し、 Java がコンパイルできるようにします。

于 2013-11-03T22:56:32.427 に答える
0

これは、方法 3 および 4 のelse-ifステートメントをelse句で終了していないためです。

于 2013-11-03T22:52:41.233 に答える
0

returnあなたは確かに声明を欠いています。Java は、非 void メソッドが常に値を返すか、例外をスローすることを期待しています。例外を返したりスローしたりせずに void 以外のメソッドを終了させると、エラーになります。

public static String numToChoice(int num)
{
    if (num == 1)
        return "rock";
    else if (num == 2)
        return "paper";
    else if (num == 3)
        return "scissors";
}

numここで、 1、2、または 3 でない場合、メソッドは何も返しません。同様に:

public static boolean play(int input)
{
    if (input == 1)
        return true;
    else if (input == 2)
        return false;
}

ここで、1 または 2 ではない入力にはreturnステートメントがありません。

于 2013-11-03T22:52:44.513 に答える