Java:带有switch语句的do-while循环

时间:2014-10-23 02:41:52

标签: java switch-statement do-while

语言:Java

boolean x = false;
String letter = "NULL";

do{
    System.out.print("Enter grade (one character): ");
    letter = sc.next(); 
    switch (letter) {
       case "a": 
       x=true;
       break;
     case "A":
       x=true;
       break;      
     case "b":
       x=true;
       break;      
     case "B":
       x=true;
       break;      
     case "c":
       x=true;
       break;      
     case "C":
       x=true;
       break;      
     case "d":
       x=true;
       break;      
     case "D":
       x=true;
       break;
     case "f":
       x=true;
       break;      
     case "F":
       x=true;
       break;
     default:
       System.out.println("Invalid grade - must enter A,B,C,D,F (upper or lower case)");
       System.out.println(x);
       break;
     }
      System.out.println(x);
     }
      while(x=false);

--------------结果输出------------------------------- ----结果输出--------------------------

由于我是新手,我需要10个声望才能发布输出的图片...所以这是输出的输出...

//如果我输入String" e"

输入成绩(一个字符):e 成绩无效 - 必须输入A,B,C,D,F(大写或小写)

//如果我输入String" A"

,这是为了

输入成绩(一个字符):A

成绩无效 - 必须输入A,B,C,D,F(大写或小写)

问题***:对于我的输出,当我进入" e"时,我希望看到类似

的内容

输入成绩(一个字符):e

成绩无效 - 必须输入A,B,C,D,F(大写或小写)

//循环

输入成绩(一个字符):

所以我希望当我进入" e"它会使它变为假...然后从头开始直到最后输入的结果为:A,B,C,D,F(大写或小写)

我的错误是什么?我一直在尝试集思广益,但我想我会看到你们要说的话......

如果你认为我用来获得输出的策略不是最好的......你会推荐什么策略/逻辑?

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

 while(x=false);

这是错误的。 (应该是==)

答案 1 :(得分:1)

=是赋值运算符,你必须使用==来检查相等性而不是那个,请注意这里你的开关可以减少到以下,目前你有冗余代码你可以更好地使用if语句这里有||运营商。

  switch (letter) {
     case "a": 
     case "A":    
     case "b":
     case "B":
     case "c":
     case "C":    
     case "d":   
     case "D":
     case "f":     
     case "F":
       x=true;
       break;
     default:
     //...

答案 2 :(得分:1)

您可以进一步简化switch语句。通过将字母转换为大写,您将检查大写和小写。例如:

    do{
        System.out.print("Enter grade (one character): ");
        letter = sc.next(); 
        switch (letter.toUpperCase()) {
            case "A":                   
            case "B":       
            case "C":       
            case "D":       
            case "F":
                x=true;
                break;
            default:
                System.out.println("Invalid grade - must enter A,B,C,D,F (upper or lower case)");                    
                break;
        }                    
    } while(x==false);        

    System.out.println(x);