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