奇怪的Switch语句错误

时间:2014-11-29 17:26:07

标签: java debugging switch-statement

choice = UserInput.validString();

while(ValidOption == false){            
    switch(choice){
        case  "y": 
            ValidOption = true; 
            roll();
            break;

        case "n": 
            ValidOption = true; 
            MainMenu.menu(); 
            break;

        default:  
            System.out.print("You must pick Y or N, try again : ");
            ValidOption = false; 
            choice = UserInput.eraseStringInput();
            break;
    }
} 
return; 
}

所以当我按下“y”时,我的程序将在我的switch语句中运行默认情况,然后它会立即运行y情况。这是我的代码。为什么这样做?

这是我的validString方法

public static String validString(){
    do {
        if(input.hasNext("\\p{Alpha}*")){
            s = input.nextLine();
            valildString  = true;
        } 
        else {
            System.out.print("You can only use letters, Try again :  ");
            input.next();
            valildString  = false;
        }
    } while (!(valildString ));

    return s;
} 

这是PIC: [1]:http://i58.tinypic.com/e6t9v6.png

1 个答案:

答案 0 :(得分:0)

读取控制台输入的方法是使用控制台或扫描仪,那么如何获得输入?

Scanner console = new Scanner(System.in);
System.out.println("Please input choice (y/n): ");
String choice = console.nextLine();

---------或---------

Console console = System.console();
String choice = console.readLine("Enter choice (y/n):");

然后使用开关盒。如果我正确地阅读了您的代码,那么还不足以真正看到完全正在发生的事情。

编辑:更改if语句以读取input.next(),并使用else语句读取input.nextLine() - 根据RealSkeptic