我真的很想听听这个消息。我是java的新手,正在发生最奇怪的事情。
这是家庭作业,我一次要迈出一步。我的问题是循环一直持续并停止要求输入,只是一直循环直到终止。我的评论主要针对我自己。我试图提取出导致我的问题的原因,然后将其发布在这里。
看看“ hatColor”开关,您会注意到我确保用户仅从我分配的选项中输入的方式。我应该使用异常处理程序还是什么?
总之,问题在于,如果我输入带空格的内容,循环将跳过询问我的下一个输入。就像,如果在第一次提示时我向扫描仪输入了“ y y y y y”,该程序将终止并且不会给我输入其他内容的机会。
请,任何了解这一点的人,我将非常感谢您的帮助。
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");
}
}
答案 0 :(得分:0)
因此,发布后,我实际上已经解决了此问题。但是我保证,我在发布这里之前已经花了好几个小时。如果有人需要在这里寻求帮助:
我遇到的问题是由于使用扫描仪方法
variableToAssign = ScannerName.next();
代替
variableToAssign = ScannerName.nextLine();
我觉得很蠢。抱歉浪费您的时间。