Зацикливание оператора «If Else» java

#java #loops #if-statement #random #numbers

#java #петли #if-оператор #Случайный #числа #циклы #if-statement

Вопрос:

Я пытаюсь создать простую программу на Java с использованием сканера, которая позволит пользователю играть в кости (играть в кости).

1. Этот код просит пользователя ввести, сколько у него денег.

  1. Код попросит пользователя ввести ставку.

  2. Используя генератор случайных чисел, он сообщит пользователю, что они бросили, и сообщит пользователю, сколько денег они выиграли / проиграли.

Я смог успешно сообщить компьютеру, чтобы он сообщал пользователю, когда они выиграли или проиграли, когда они бросают 2,3,7,11 или 12.

Я не уверен, как сообщить компьютеру, чтобы позволить пользователю продолжать бросать кости, когда выпадают другие случайные значения, такие как 4,5,6,8,9 и 10, пожалуйста, помогите. Вот мой код:

 System.out.println("How much is in your purse?: ");
purse = input.nextInt();

System.out.println("make a bet: ");
bet = input.nextInt();

int pNumber = rand.nextInt(12)   1;

if (pNumber == 2 || pNumber == 3 || pNumber == 12)
{
    purse = purse - bet;
    System.out.println("you rolled a "   pNumber);
    System.out.println("you lost $"   bet);
}
else if (pNumber == 7 || pNumber == 11)
{
    purse = purse   bet;
    System.out.println("you rolled a "   pNumber);
    System.out.println("you won $"   bet );
}
else
{
    System.out.println("you rolled a "   pNumber   ",keep rolling" );
}
  

Комментарии:

1. Игра окончена, если пользователь выигрывает или проигрывает?

2. Нет, игра продолжается до тех пор, пока у пользователя не закончатся деньги (кошелек == 0)

Ответ №1:

Используйте внешний цикл while, чтобы продолжать игру, пока у пользователя не закончатся деньги.

Что-то вроде этого. Начните с начальной суммы в кошельке, затем запустите игру.

Если пользователь выигрывает или проигрывает, он делает новую ставку и снова делает бросок.

Если пользователь не выигрывает и не проигрывает, он просто снова делает бросок с текущей ставкой.

 System.out.println("How much is in your purse?: ");


   purse = input.nextInt();
   boolean newBet = true;

    while(purse > 0)
    {
     if(newBet)
     {
      System.out.println("make a bet: ");
      bet = input.nextInt();
     }

     //roll the dice, new bet or not
     int pNumber = rand.nextInt(12)   1;

     if ( pNumber == 2 || pNumber == 3 || pNumber == 12)
     {
            purse = purse - bet;
            System.out.println("you rolled a "   pNumber);
            System.out.println("you lost $"   bet);
            newBet =true; //make a new bet if you won
     }
     else if (pNumber == 7 || pNumber == 11)
     {
            purse = purse   bet;
            System.out.println("you rolled a "   pNumber);
            System.out.println("you won $"   bet );
            newBet=true; //make a new bet if you lost
     }
     else
     {
       System.out.println("you rolled a "   pNumber   ",keep rolling" );
       newBet=false; // make no new bet, neither won nor lost

     }
   } //end while


  System.out.println("Game over !")
  

Вы могли бы добавить условия для выхода из цикла while, если пользователь хочет выйти до того, как у него закончатся деньги и т. Д.

Комментарии:

1. Однако это не то, о чем просил OP. OP хочет знать, как разрешить пользователю повторно бросать свои кости, если они бросают 4,5,6,8,9 или 10

2. OP сказал в комментариях, что они хотели, чтобы игра продолжалась, даже если пользователь выиграл деньги (выпало 7 или 11) или потерял деньги (выпало 2, 3 или 12), или бросок не повлиял на деньги (4,5,6,8,9,10).

Ответ №2:

Ключ, если вы хотите продолжать переход к определенным числам, поместите весь свой код в цикл while-loop или цикл do-while.

Ответ №3:

Вот простой алгоритм в простых словах, который может помочь представить реальный код:


В методе назовите его roll, используйте генератор случайных чисел для имитации броска пользователя

Если число бросков пользователя не равно 4,5,6,8,9 или 10, которые, согласно вашему объяснению, являются проблемными числами, продолжайте свои вычисления

В противном случае, если пользователь действительно набрал неверное число, выполните рекурсивный вызов метода roll . Это сгенерирует еще один случайный бросок и снова выполнит проверки, пока не будет сгенерирован «приемлемый» бросок


Не уверен, что вы еще знаете о рекурсии, но в основном это метод, вызывающий сам себя.

Ответ №4:

 boolean keep_rolling = true;

While(keep_rolling== true)
{
System.out.println("How much is in your       purse?: ");
        purse = input.nextInt();
        if(purse==0){
System.out.println("you need more money to continue ");

}else{  

        System.out.println("make a bet: ");
        bet = input.nextInt();



    int pNumber = rand.nextInt(12)   1;






        if ( pNumber == 2 || pNumber == 3 || pNumber == 12)
        {
            purse = purse - bet;
            System.out.println("you rolled a "   pNumber);
            System.out.println("you lost $"   bet);
keep_rolling= false;
        }
                    else if (pNumber == 7 || pNumber == 11)
                    {
                        purse = purse   bet;
                        System.out.println("you rolled a "   pNumber);
                        System.out.println("you won $"   bet );

        keep_rolling= false;                }
                        else
                        {

System.out.println("you rolled a "       pNumber   ",keep rolling" );

                                        }
}//end else of purse==o
}//end while
  

Комментарии:

1. Спасибо всем, в частности спасибо Painsanco, который сделал именно то, что я хотел, чтобы он делал!

2. @KelOkekpe Вы должны принять ответ, который сработал для вас, это лучший способ поблагодарить!