调用开关语句中忽略案例



在包含交换机语句的下面代码中,是否可以合并equalsignorecase方法,即,用户会获取等级消息,无论是否输入A或A。等等?

我通过使用"将用户输入转换为高层"方法获得了正确的结果,但是我很好奇是否可以在此处使用ignorecase方法。我试图这样做,但它似乎并没有任何用途,可能是因为无知酶是一个布尔人,它返回真/错误结果,而不是消息。我尝试研究了这一点,但是所有在线结果都建议使用Touppercase方法,这是我已经尝试和工作的。

  Scanner scan = new Scanner(System.in);
  System.out.println("Please enter grade.");
  String gradeLetter = scan.next();
  String message = "A";
  switch (gradeLetter) {
  case "A":
      message = "Excellent!";
      break;
  case "B":
      message = "Good job.";
      break;
  case "C":
      message = "You passed.";
      break;
  case "D":
      message = "You can do better.";
      break;
  case "F":
      message = "You failed.";
      break;
      default: message = gradeLetter + " is invalid.";
  }
    System.out.println(message);

您可以使用switch (gradeLetter.toUpperCase()),但这看起来像是Map<String, String>更好的用例。像

Scanner scan = new Scanner(System.in);
Map<String, String> map = new HashMap<>();
map.put("A", "Excellent!");
map.put("B", "Good job.");
map.put("C", "You passed");
map.put("D", "You can do better.");
map.put("F", "You failed.");
// ... No Loop?
System.out.println("Please enter grade.");
String gradeLetter = scan.next();
System.out.println(map.getOrDefault(gradeLetter.toUpperCase(), 
        String.format("%s is invalid.", gradeLetter)));

如您已经提到的,您可以打开gradeLetter.toUpperCase()

您也可以使用秋季直线,其中多个案例标签跳到同一代码块:

switch (gradeLetter) {
  case "A":
  case "a":
      message = "Excellent!";
      break;
  case "B":
  case "b":
      message = "Good job.";
      break;
  /* etc */

例如,例如" a"one_answers" a"。case "A":之后没有break语句,因此执行直接进入case "a":块。

最新更新