Java 在我的程序中使用break语句使用switch语句计算闰年时出现问题 公共类MonthDayCal{ 公共静态布尔值isLeapYear(整数年){ 如果(年份9999) 返回false; 否则{ 交换机(第%4年){ 案例0: 如果((年份%100)==0){ 如果((年份%400)==0){ 返回true; }否则 返回false; }否则 返回true; break;//
永远不会到达Java 在我的程序中使用break语句使用switch语句计算闰年时出现问题 公共类MonthDayCal{ 公共静态布尔值isLeapYear(整数年){ 如果(年份9999) 返回false; 否则{ 交换机(第%4年){ 案例0: 如果((年份%100)==0){ 如果((年份%400)==0){ 返回true; }否则 返回false; }否则 返回true; break;//,java,switch-statement,break,Java,Switch Statement,Break,永远不会到达break语句,因为案例0的所有执行路径始终以return语句结束 因此不需要它 如果为变量赋值而不是返回语句,则需要break语句: public class MonthDayCal { public static boolean isLeapYear(int year) { if (year < 1 || year > 9999) return false; else { swi
break
语句,因为案例0
的所有执行路径始终以return语句结束
因此不需要它
如果为变量赋值而不是返回语句,则需要break
语句:
public class MonthDayCal {
public static boolean isLeapYear(int year) {
if (year < 1 || year > 9999)
return false;
else {
switch (year % 4) {
case 0:
if ((year % 100) == 0) {
if ((year % 400) == 0) {
return true;
} else
return false;
} else
return true;
break; // <--java : unreachable statement
default:
return false;
}
}
}
public static void main(String[] args) {
System.out.println(isLeapYear(2100));
}
}
或者更简单(尽管还可以进一步简化):
boolean结果=false;
如果(year>=1&&year在此break;
之前,您在每种情况下都返回。这意味着它是不可访问的…case
s只能有一个return
或break
,因为它们都会导致退出作用域。我知道您做了什么,感谢您的快速响应。那么这是否意味着如果我在每种情况下都返回一个值,我会永远不要使用break语句,因为它变得不可访问?@R\u Pal这是正确的。编译器会帮助您做到这一点,但如果您将任何语句放在无法访问的地方,则不允许代码通过编译。
boolean result = false;
if(year<1 || year>9999)
result = false;
else {
switch(year%4){
case 0:
if((year%100)==0){
if((year%400)==0){
result = true;
}
else
result = false;
}
else
result = true;
break;
default:
result = false;
}
}
return result;
boolean result = false;
if(year>=1 && year<=9999) {
switch(year%4){
case 0:
if((year%100)==0){
if((year%400)==0){
result = true;
}
} else {
result = true;
}
}
}
return result;
boolean result = false;
if(year>=1 && year<=9999 && year%4 == 0) {
if((year%100)==0){
if((year%400)==0){
result = true;
}
} else {
result = true;
}
}
return result;
boolean result = false;
if(year>=1 && year<=9999 && year%4 == 0) {
if((year%100) != 0 || (year%400)==0) {
result = true;
}
}
return result;