0

わかった。

これが私の質問です。サイコロゲームを作っているときにちょっと困っています。私が問題を抱えている部分は、do while ループを使用して終了させることです。これが私のコードです。そして、私が何を意味するのかをさらに説明します

import java.util.Scanner;

public class Dice
{
 public static void main (String[] args)
 {
    int diceGuess;
    int rollNum, roll1, roll2, roll3;
    String playAgain = "yes";

    Scanner sc = new Scanner(System.in);


     // Create two separate dice objects to create a pair of dice
            Roll die1 = new Roll();
            Roll die2 = new Roll();

    // get from the user the number of dice rolls
            System.out.print ("Please enter a number between 2 and 12 to begin: ");
            diceGuess = sc.nextInt();

    do
    {       
        // loop to show rolls
        for (rollNum = 1; rollNum <=3; rollNum++)
          {
          System.out.println("**********Roll #: " + rollNum + " ************");
            roll1 = die1.roll();
            roll2 = die2.roll();

                //if statement to display you win if you win, and to make the loop break.
                if(diceGuess==roll1+roll2)  
                    {
                        System.out.println("You win!");
                        rollNum = 4;
                    }

                if(rollNum == 3)
                    {
                        System.out.println("You lose.\n");
                        System.out.println("Would you like to play again?");
                        playAgain = sc.nextLine();
                        rollNum ++;
                    }
            }           
        }while(playAgain == "yes");

}

}

これは私のユーティリティ クラスです。もう一度プレイするかどうかをユーザーに尋ね、ユーザーが「いいえ」と入力した場合は終了させたい。これは私の側の小さな誤解に過ぎないと確信しています。
ありがとうございます。

そしてheres他のクラス

//Justin Le
//Dice class


import java.util.Random;

public class Roll
{
//variables used in class
private Random randomRoll = new Random();
private int roll;
boolean playAgain = false;


//constructor
public Roll()
{
    roll = 0;
}

//method named roll to return roll number and inside, calls a method to display the roll.
public int roll()
{
    roll = randomRoll.nextInt(6) + 1;
    showRoll(roll);  //accesses showRoll to output in driver class.
    return roll;

}

public boolean test()
{
    playAgain = !playAgain;
    return playAgain;
}


//displays picture of dice roll
private void showRoll(int r)
    {
        switch(r)
            {
            case 1:
                System.out.println("One: \n" +
                                         " \n  "   +
                                         "  *  \n" +
                                         " \n  ");
            break;

            case 2:
                System.out.println("Two: \n" +
                                         "*    \n" +
                                         "     \n" +
                                         "    *\n");
            break;

            case 3:
                System.out.println("Three:\n" +
                                         "*    \n" +
                                         "  *  \n" +
                                     "    *\n");
            break;

            case 4:
                System.out.println("Four:\n" +
                                        "*   *\n" +
                                     "     \n" +
                                     "*   *\n");
            break;

            case 5:
                System.out.println("Five:\n" +
                                        "*   *\n" +
                                         "  *  \n" +
                                         "*   *\n");
            break;

            case 6:
                System.out.println("Six: \n" +
                                        "*   *\n" +
                                         "*   *\n" +
                                         "*   *\n");
            break;
            default:
                System.out.println("error\n");
    }

}

}

4

4 に答える 4

4

その間、equals()メソッドを使用して文字列を比較します.. : -

playAgain.equals("yes")

と..を使用した比較の違いについては、この優れた投稿を参照してください。equals()==

最初のコードで: -

if(rollNum == 3)
{
    System.out.println("You lose.\n");
    System.out.println("Would you like to play again?");
    //playAgain = sc.nextLine();

    // Change your nextLine() to next()
    playAgain = sc.next();
    rollNum ++;
}
于 2012-10-06T22:36:53.887 に答える
3

変化する

playAgain == "yes"

"yes".equals(playAgain)
于 2012-10-06T22:36:43.387 に答える
1

while(plyaAgain.equals("yes")); を使用します。

文字列比較の詳細については、このリンクをたどってください: Java で文字列を比較するにはどうすればよいですか?

于 2012-10-06T22:36:47.943 に答える
0

これを変える:

while(playAgain == "yes");

これに:

while(playAgain.equals("yes"));
于 2012-10-06T22:40:25.703 に答える