【问题标题】:Java: do-while loop with switch statement [closed]Java:带有switch语句的do-while循环[关闭]
【发布时间】:2014-10-23 02:41:52
【问题描述】:

语言: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 声望才能发布输出的图片...所以这是通过输入输出的输出...

//如果我输入字符串“e”

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

//如果我输入字符串“A”

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

无效等级 - 必须输入 A、B、C、D、F(大写或小写)

是的

问题***:对于我的输出,当我输入“e”时,我希望看到类似的东西

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

无效等级 - 必须输入 A、B、C、D、F(大写或小写)

//循环遍历

输入成绩(一个字符):

所以我希望当我输入“e”时它会使其为假......然后从头开始直到最终输入结果:A,B,C,D,F(上或下案例)

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

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

感谢您的帮助!

【问题讨论】:

  • 很简单,在你的默认语句中,使 x == false;
  • 你可以做while(!x)。如果您尝试反转该比较,您会注意到您的错误while(false = x)
  • @DreadHeadedDeveloper - 谢谢!!

标签: java switch-statement do-while


【解决方案1】:
 while(x=false);

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

【讨论】:

  • 天哪....我讨厌这些愚蠢的错误!希望我能自己抓住它们! (希望我不是唯一一个遇到这个问题的人:))
  • 你学习编程的方式是按顺序犯每一个错误,直到你犯了足够多的错误并且你厌倦了它。 :)
【解决方案2】:

是的= 是赋值运算符,你必须使用== 来检查相等性,除此之外,注意这里你的开关可以减少到跟随,目前你有冗余代码,你可以更好地使用带有|| 的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:
     //...

【讨论】:

  • 谢谢!那是我将来绝对可以申请的!
【解决方案3】:

您可以进一步简化 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);

【讨论】:

  • 哇多纳尔!谢谢!很棒的提示!
猜你喜欢
  • 2021-03-08
  • 1970-01-01
  • 2018-09-16
  • 2022-01-03
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多