package com.learningjava.conditionals;
public class SwitchExcercises {
public static boolean isWeekDay(int dayNumber) {
switch (dayNumber) {
case 0:
case 1:
case 2:
case 3:
case 4:
return true;
case 5:
case 6:
return false;
case default:
return false;
}
}
}
我使用 Eclipse 作为我的 IDE。在默认情况下显示错误,说
The preview feature Pattern Matching in Switch is only available with source level 20 and above.
使用java-se 17。感谢您的帮助。
这是一个语法错误,您打算编写的代码实际上试图做一些与您预期完全不同的事情。您的语法错误意外地与名为“switch 表达式和语句的模式匹配”的全新 Java 功能重叠。 要修复错误,只需将
case default
切换为
default
。case default:
return false;
到
default:
return false;
为了更好地解释错误消息,Eclipse IDE 知道新的 Java 功能,因此试图让您知道您正在做的事情看起来像新功能,并且如果您尝试执行新功能功能,您应该将代码级别升级到21或以上。
但是,当然,Eclipse 弄错了——您只需要一个默认子句。所以像我上面展示的那样写,错误就会消失。
public static boolean isWeekDay(int dayNumber) {
return switch (dayNumber) {
case 0, 1, 2, 3, 4 -> true;
case 5, 6 -> false;
default -> false;
}
甚至
return switch (dayNumber) {
case 0, 1, 2, 3, 4 -> true;
default -> false;
}
因为这里的意图是“如果在 0..4 中则为 true,否则为 false”。