Java 在switch语句中调用ignore大小写

Java 在switch语句中调用ignore大小写,java,Java,在下面包含switch语句的代码中,是否可以合并equalsIgnoreCase方法,即无论是否输入a或a,用户都可以获得等级消息,等等 我通过使用“将用户输入转换为大写”方法获得了正确的结果,但我很好奇这里是否可以使用ignoreCase方法。我尝试过这样做,但它似乎无论如何都不起作用,可能是因为ignoreCase是一个返回真/假结果的布尔值,而不是一条消息。我试着对此进行研究,但所有的在线结果都建议使用toUpperCase方法,这是我已经尝试过的方法 Scanner scan = n

在下面包含switch语句的代码中,是否可以合并equalsIgnoreCase方法,即无论是否输入a或a,用户都可以获得等级消息,等等

我通过使用“将用户输入转换为大写”方法获得了正确的结果,但我很好奇这里是否可以使用ignoreCase方法。我尝试过这样做,但它似乎无论如何都不起作用,可能是因为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);

如前所述,您可以打开
gradeLetter.toUpperCase()

您还可以使用下拉,其中多个大小写标签跳转到同一代码块:

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

例如,考虑“a”和“a”。
case“A”之后没有
break
语句:
,因此执行将直接进入
case“A”:
块。

如前所述,您可以打开
gradeLetter.toUpperCase()

您还可以使用下拉,其中多个大小写标签跳转到同一代码块:

switch (gradeLetter) {
  case "A":
  case "a":
      message = "Excellent!";
      break;
  case "B":
  case "b":
      message = "Good job.";
      break;
  /* etc */
例如,考虑“a”和“a”。
case“A”之后没有
break
语句:
,因此执行直接进入
case“A”:
块。

您可以
切换(gradeLetter.toUpperCase())
,但对我来说这似乎是
映射的更好的用例。差不多

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)));
Scanner scan=新的扫描仪(System.in);
Map Map=newhashmap();
地图。放(“A”,“好极了!”);
放在地图上(“B”,“干得好”);
地图。放置(“C”,“你通过了”);
地图。放(“D”,“你可以做得更好。”);
map.put(“F”,“你失败了”);
// ... 没有循环?
System.out.println(“请输入成绩”);
String gradeLetter=scan.next();
System.out.println(map.getOrDefault(gradeLetter.toUpperCase(),
格式(“%s无效。”,gradeLetter));
您可以
切换(gradeLetter.toUpperCase())
,但对我来说,这似乎是
映射的更好用例。差不多

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)));
Scanner scan=新的扫描仪(System.in);
Map Map=newhashmap();
地图。放(“A”,“好极了!”);
放在地图上(“B”,“干得好”);
地图。放置(“C”,“你通过了”);
地图。放(“D”,“你可以做得更好。”);
map.put(“F”,“你失败了”);
// ... 没有循环?
System.out.println(“请输入成绩”);
String gradeLetter=scan.next();
System.out.println(map.getOrDefault(gradeLetter.toUpperCase(),
格式(“%s无效。”,gradeLetter));

我可能会选择
Enum
我自己,尽管这个解决方案的优点是将来需要数据/属性驱动:)我可能会选择
Enum
我自己,尽管这个解决方案的优点是将来需要数据/属性驱动:)