Задача состоит в том, чтобы позволить пользователю вводить денежную сумму в виде ставки (этот номер должен быть больше 0 ставок> 1).Java Dice game issue
1) Выполнены две кости (1-6).
2) Их сумма рассчитана. Если эта сумма равна 7, пользователь выигрывает 4 $, и если они проигрывают, пользователь теряет 1 $ (Ex: User вводит 5 $ в качестве начальной ставки, выигрыши = 5 + 4 = 9 $ now-loses = 5-1 = 4 $ сейчас).
После того, как пользователь играет, мы должны спросить их, хотят ли они снова играть и, по существу, запустить программу, используя инструкцию while.
Я прокомментировал утверждения print в строках 43 и 50, потому что произойдет то, что эти две строки будут печататься перед первоначальным вопросом о том, сколько пользователь хотел бы войти (вот почему я прокомментировал их).
Теперь проблема заключается в том, что после того, как пользователь вводит сумму, которую он/она хочет сделать, система затем вычисляет сумму, которую они выигрывают/теряют, и печатает это. Тем не менее, он пропускает инструкцию печати, спрашивая их, хотят ли они снова играть. Почему это? Я знаю, что что-то не так, потому что изначально программа пропускала первый оператор печати и сразу переходила ко второй и третьей функции. Любая помощь?
Спасибо!
// Edit: Кроме того, если это не было уже очевидно, я совершенно новой для программы, поэтому, пожалуйста, не стесняйтесь критиковать меня в любом случае ^^
//Dice Game
//10/11/14
import java.util.Random;
import java.util.Scanner;
public class diceGame2
{
//Instance Variables
private String play = "yes";
private int cash;
private int sum;
private int winnings;
Scanner scan = new Scanner(System.in);
Random rand = new Random();
//Constructor
public diceGame2()
{
cash=0;
sum=0;
winnings=0;
}
public void game()
{
do
{
System.out.println("Please enter the amount of money you would like to bet");
cash=scan.nextInt();
if(cash<1)
{
System.out.println("Please enter a bet greater than 1$.");
cash=scan.nextInt();
}
}while((play.equals("yes")&&cash<0));
}
public int getDice()
{
int dice = rand.nextInt(6) + 1;
System.out.println("The number rolled was a" + " " + dice);
System.out.println();
return dice;
}
public int getSum(int d1, int d2)
{
sum = d1+d2;
System.out.println("Their sum is" + " " + sum + " " + "so...");
System.out.println();
return sum;
}
public int getWinnings(int sum)
{
if(sum==7)
{
cash += (4);
System.out.println("You have won" + " " + "4$.");
}
else
{
cash -= (1);
System.out.println("You have lost" + " " + "1$.");
}
System.out.println("You current have" + " " + cash + " " + "dollars left to bet");
return winnings;
}
public String getPlay()
{
System.out.println("Do you want to play again");
play = scan.next();
return play;
}
}//Class
//Dice Game Runner
//10/11/14
public class diceGameRunner
{
public static void main(String[]args)
{
String play = "yes";
while((play.equals("yes")))
{
diceGame2 d1 = new diceGame2();
int dice1, dice2, sum;
double money;
d1.game();
dice1 = d1.getDice();
dice2 = d1.getDice();
sum = d1.getSum(dice1, dice2);
money = d1.getWinnings(sum);
play = d1.getPlay();
}
}
}
Я просто просмотрел это, поэтому я не прочитал его должным образом (пока), но сразу у вас есть цикл while, содержащий безусловный оператор break, поэтому цикл будет выполняться только один раз. Не знаю, является ли это вашей проблемой, но это похоже на ошибку. Другими словами, 'while' действует эквивалентно' if'. – bcsb1001
Вам нужно опубликовать свой основной метод или показать, что ваши методы называются –
@ bcsb1001 Единственная причина, по которой я поставил оператор break, состоит в том, что без него он застрял бы в операторе while. Я знал, что он будет работать только один раз из-за инструкции break, я просто не уверен, как заставить его покинуть цикл после запроса печати. – user3657449