在包含交换机语句的下面代码中,是否可以合并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":
块。