EDIT: У меня есть некоторые исправления в качестве ответа. Мне нужно было использовать другой цикл do-while для разных сценариев в игровом автомате. Я выяснил ответ на этот конкретный вопрос и отправил ответ всем, кто хотел бы использовать это для помощи.не выполнит цикл while while
У меня есть один цикл while, который не будет завершен. Чтобы войти в цикл do while, мне нужно ввести число. Он не запускается, если пользователь ничего не вводит - он даст ошибку несоответствия, если вы введете письмо, которое понятно, но как я могу попасть в цикл без ввода пользователем чего-либо?
Кроме того, будет ли вставлять другой цикл, решить проблему, которая не полностью работает? Я в замешательстве относительно логики, и мой псевдокод ошибочен. Спасибо.
import java.util.Scanner;
import java.util.Random;
import java.io.*;
public class Slot2
{
public static void main(String[] args) throws IOException
{
int number;
System.out.println ("Welcome to the Slot Machine Simulator!");
System.out.println ("\nActions\n1. Start a new game\n2. Scores\n3. Exit");
System.out.print ("\nPlease select an action: ");
Scanner keyboard = new Scanner(System.in);
int option = keyboard.nextInt();
while (option != 1 && option != 2 && option != 3)
{
System.out.print ("\nThat is not an option. Please select an item number between 1-3: ");
option = keyboard.nextInt();
break;
}
if (option == 1)
{
String username;
double startingTotal = 100.0;
double userTotal = startingTotal;
System.out.print ("\nBefore the game begins, please enter your name: ");
username = keyboard.next();
System.out.print ("\nGame start! You will begin with $100.00. Enter a negative value to quit the game. Good luck, " + username + "!");
do **//you have to enter a number here to get the 1st print statement,this is the error**
{
double bet = keyboard.nextDouble();
bet = 0.0;
userTotal = startingTotal - bet;
System.out.print ("You currently have: $%.2f" + startingTotal + "\nHow much would you like to bet?"); **//this is the part of the loop that works**
double winnings = 0.0;
double userFinalTotal = 0.0;
Random generator = new Random();
int slot1 = generator.nextInt(6);
int slot2 = generator.nextInt(6);
int slot3 = generator.nextInt(6);
String firstSlot = "";
switch (slot1)
{
case 0:
firstSlot = "Cherries";
break;
case 1:
firstSlot = "Oranges";
break;
case 2:
firstSlot = "Plums";
break;
case 3:
firstSlot = "Bells";
break;
case 4:
firstSlot = "Melons";
break;
case 5:
firstSlot = "Bars";
break;
}
String secondSlot = "";
switch (slot2)
{
case 0:
secondSlot = "Cherries";
break;
case 1:
secondSlot = "Oranges";
break;
case 2:
secondSlot = "Plums";
break;
case 3:
secondSlot = "Bells";
break;
case 4:
secondSlot = "Melons";
break;
case 5:
secondSlot = "Bars";
break;
}
String thirdSlot = "";
switch (slot3)
{
case 0:
thirdSlot = "Cherries";
break;
case 1:
thirdSlot = "Oranges";
break;
case 2:
thirdSlot = "Plums";
break;
case 3:
thirdSlot = "Bells";
break;
case 4:
thirdSlot = "Melons";
break;
case 5:
thirdSlot = "Bars";
break;
}
System.out.println ("-------------------------------");
System.out.println ("" + firstSlot + " " + secondSlot + " " + thirdSlot);
System.out.print ("-------------------------------");
if (slot1 == slot2 && slot1 == slot3)
{
winnings = bet * 3;
userFinalTotal = userTotal + winnings;
System.out.printf ("\nNumber of matches: 3. You win: $%.2f", winnings);
System.out.printf ("\nYou currently have: $%.2f", userFinalTotal);
}
else if ((slot1 == slot2 && slot2 != slot3) || (slot1 == slot3 && slot1 != slot2) || (slot2 == slot3 && slot3 != slot1))
{
winnings = bet * 2;
userFinalTotal = userTotal + winnings;
System.out.printf ("\nNumber of matches: 2. You win: $%.2f", winnings);
System.out.printf ("\nYou currently have: $%.2fn", userFinalTotal);
}
else
{
System.out.printf ("\nNumber of matches: 0. You win: $%.2f", winnings);
System.out.printf ("\nYou currently have: $%.2f", userFinalTotal);
}
if ((bet < 0) || (userFinalTotal <= 0))
{
break;
}
while (bet > userFinalTotal)
{
System.out.print("\nYour bet is greater than your current total. Please enter a valid amount: ");
bet = keyboard.nextDouble();
}
} while (userTotal > 0);
}
}
}
Вы должны быть понятнее о чем ваш спрашивать, потому что ваш вопрос, кажется, не имеет особого смысла. Помимо несоответствующего «разрыва» в вашем первом цикле (к которому вы, кстати, обращаетесь, кстати?), Пользовательская часть ввода, похоже, правильно делает то, что вы описываете, с первого взгляда. Я не могу поставить «У меня есть цикл, который не заканчивается» и «Как мне попасть в цикл без ввода пользователем чего-либо?» (между прочим) вместе в один согласованный вопрос. –
@Jason C Я думал, заявив, что у меня возникла проблема с циклом do while, а затем комментируя точный цикл while, где произошла ошибка, я был ясен, но извините за путаницу. Я исправлю несоответствующий оператор break в первом цикле; однако, моя реальная проблема, как указано в вопросе, - это цикл while. Он проходит только часть отмеченного комментария (только печатает первый оператор, также отмеченный). – mrkrebs
@JasonC Чтобы изложить вопрос о вводе номера, программа будет работать до тех пор, пока не дойдет до времени. Затем, если я введу число (скажем, 1), оно будет работать только до первого оператора печати в цикле (также отмеченного комментарием). Если бы вы могли объяснить логику в такой ошибке, как это, я бы очень ее оценил - я не хочу повторять такую ошибку снова. – mrkrebs