Java:有时只能使用带开关的循环-新手

时间:2018-10-14 22:24:00

标签: java while-loop switch-statement

我真的很想听听这个消息。我是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");
}

}

1 个答案:

答案 0 :(得分:0)

因此,发布后,我实际上已经解决了此问题。但是我保证,我在发布这里之前已经花了好几个小时。如果有人需要在这里寻求帮助:

我遇到的问题是由于使用扫描仪方法

variableToAssign = ScannerName.next();

代替

variableToAssign = ScannerName.nextLine();

我觉得很蠢。抱歉浪费您的时间。