Я действительно поцарапал услышанное на этом.Я новичок в Java, и у меня случается самое странное.
Это домашнее задание, и я делаю это по одному шагу за раз.Моя проблема в том, что цикл просто продолжает работать и перестает запрашивать ввод, просто продолжает цикл, пока не завершится.Мои комментарии в основном для меня.Я попытался извлечь то, что вызывало мою проблему, и опубликовать это здесь.
Посмотрите на переключатель "hatColor", и вы заметите, как я проверяю, что пользователь вводит только те параметры, которые я выделил.Должен ли я использовать обработчик исключений или что-то еще?
В любом случае, проблема в том, что если я введу что-то с пробелами, цикл пропускает запрос на мой следующий ввод.Например, если я ввел «yyyyy» в сканер при первом запросе, программа завершит работу и не даст мне возможности ввести что-то еще.
Пожалуйста, всем, кто понимает это, я был бы очень признателен за вашу помощь.
import java.util.Scanner;
public class Testing
{
static String hatColor;
public static void main(String[] args) {
gameStart();
}
public static void gameStart()
{
Scanner userInput = new Scanner(System.in);
boolean keepLooping = true;
int loopCounter = 0;
System.out.println("The game begins. You must choose between 3 different colored hats."
+ " You can type white, black, or gray.");
while (keepLooping == true)
{
hatColor = userInput.next();
switch(hatColor)
{
case "white":
System.out.println("You have chosen the path of well intentioned decisions.");
walletDrop();
//the two items below are only there in case the wallet drop somehow completes without calling another method
keepLooping = false; // stops the while loop from looping again.
break; // breaks out of the switch
case "gray":
System.out.println("You have chosen the path of free will.");
walletDrop();
keepLooping = false;
break;
case "black" :
System.out.println("You have chosen the path of personal gain.");
walletDrop();
keepLooping = false;
break;
default : //we could just copy this default chunk for later switch statements
if (loopCounter >= 3)//end program on them
{
System.exit(0);
}
System.out.println("You didn't enter a usable answer. Try again");
loopCounter++;
if (loopCounter == 3)
{
System.out.println("This program will self destruct if you enter another invalid response.");
}
}//end of switch
}//end of while
}//end of game start method
public static void walletDrop()
{
System.out.println("wallet drop successful");
}
}