开关状态的默认情况是否有中断?
来自Oracle的示例
public class SwitchDemo {
public static void main(String[] args) {
int month = 8;
String monthString;
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
default: monthString = "Invalid month";
break; //why is there a switch statement here?
}
System.out.println(monthString);
}
}
该页面解释
从技术上讲,最终的休息不是必需的,因为流程不在switch语句中。 建议使用中断,以便修改代码更容易,更不容易出错。 缺省部分处理所有未由其中一个案例部分明确处理的值。
我不确定第二句是否在一般的switch语句中使用断点是正确的,还是特别说明在最后添加break语句会使代码更少出错。 如果我在默认情况下抛出一个异常,那么是否有一点需要在事后调用break或者这是浪费? 在Netbeans红色! 出现在无法达到的break语句旁边,但编译得很好。
关于可读性,如果满足条件时运行的代码跨越几行,应如何格式化一个大小写块? 例如,而不仅仅是monthString = "January";
有10行代码循环和东西?
我正在使用开关来测试用户是否输入了选项1,2或3的编号。
我不确定第二句是否在一般的switch语句中使用断点是正确的,还是特别说明在最后添加break语句会使代码更少出错。
后者。
如果我在默认情况下抛出一个异常,那么是否有一点需要在事后调用break或者这是浪费?
浪费。 非新手认识到抛出异常是一个事实上的突破。 强大的代码是一回事,试图防止初学者和白痴成为浪费时间。 他们只会用其他方式来打破它。
在Netbeans红色! 出现在无法达到的break语句旁边,但编译得很好。
是的,但你不想要那些红色的! 摆脱它。
关于可读性,如果满足条件时运行的代码跨越几行,应如何格式化一个大小写块? 例如,而不仅仅是monthString =“January”; 有10行代码循环和东西?
考虑把它放在一个单独的方法。
我正在使用开关来测试用户是否输入了选项1,2或3的编号。
在这种情况下,你是否需要默认? 在交换机中不需要它。
在大多数情况下,我认为违约是一个非常糟糕的主意。 例外的情况是,可能会将无效值传递给switch语句,并且需要对此做些什么(抛出异常,显示消息等等)。 否则,每个可能的值都应该有一个案例,即使它是空的,所以很明显,该值是有效的,但是你不打算发生任何事情。
如果你在默认情况下抛出一个异常,break将永远不会被执行,所以你可以离开它。 我个人使用大括号来避免一般处理交换机时的可读性差。
举例来说:
switch (variable) {
case 1: {
code;
mode code;
break;
}
default: {
break;
}
}
没有大括号,而是缩进,它也很好读。 例:
switch (variable) {
case 1:
code;
mode code;
break;
default: {
break;
}
虽然这不是必需的(因为它会在没有break语句的情况下退出),我认为这是一个很好的习惯break;
在你的默认情况下。 通常情况下,当我们开始认为我们知道这一切时,我们最终会介绍一个如果我们坚持基本知识就很容易被阻止的错误。 It's a matter of consistency
。 这与使用大括号表示单行条件语句类似,如下所示:
if(true)
do x;
else
do y;
VS
if(true) {
do x;
} else {
do y;
}
以苹果着名的SSL / TLS bug为例https://www.imperialviolet.org/2014/02/22/applebug.html
链接地址: http://www.djcxy.com/p/84471.html上一篇: Should the default case of switch statment have a break?
下一篇: Switch without break