使用字符串退出do while循环

时间:2012-10-06 22:35:43

标签: java loops do-while

好。

这是我的问题。我在制作骰子游戏时遇到了一些困难。 我遇到问题的部分是使用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");

}

}

这是我的实用工具类。 我希望它询问用户是否要再次播放,然后如果用户输入否,我希望它退出。 我相信这对我来说只是一个小小的误解 非常感谢stackoverflow。

并且继承了另一个班级

//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 个答案:

答案 0 :(得分:4)

在你的同时,使用equals()方法比较字符串..: -

playAgain.equals("yes")

请参阅this excellent post,了解使用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 ++;
}

答案 1 :(得分:3)

变化

playAgain == "yes"

"yes".equals(playAgain)

答案 2 :(得分:1)

使用while(plyaAgain.equals(“yes”));

请点击此链接了解字符串比较的详细信息: How do I compare strings in Java?

答案 3 :(得分:0)

改变这个:

while(playAgain == "yes");

到此:

while(playAgain.equals("yes"));