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语句会使代码更容易出错。如果我在默认情况下抛出异常,那么之后是否有人打电话给休息或这是浪费?在Netbeans中红了!出现在无法访问的break语句旁边,但它编译得很好。
关于可读性,如果满足条件时运行的代码跨越多行,如何格式化大小写?例如,而不仅仅是monthString = "January";
,有10行代码包含循环和事物?
我正在使用开关测试用户是否输入了选项1,2或3的编号。
答案 0 :(得分:1)
我不确定第二句是否证明在switch语句中使用中断是合理的,或者具体说是在末尾添加break语句会使代码更容易出错。
后者。
如果我在默认情况下抛出异常,那么之后是否可以打电话给休息或者这是浪费?
废料。非新手认识到抛出异常是事实上的突破。使代码健壮是一回事,试图对初学者和蠢货进行防范是浪费时间。他们只会采取其他方式来打破它。
是的,但你不想要那些红色的!摆脱它。在Netbeans中红了!出现在无法访问的break语句旁边,但它编译得很好。
关于可读性,如果满足条件时运行的代码跨越多行,如何格式化大小写?例如,而不仅仅是monthString =" January&#34 ;;有10行代码的循环和东西?
考虑将其放在一个单独的方法中。
我使用开关测试用户是否输入了选项1,2或3的数字。
在这种情况下,你需要一个默认值吗?在交换机中不需要它。
我认为在大多数情况下默认是一个非常糟糕的主意。例外情况是可能将无效值传递给switch语句,您需要对此做些什么(抛出异常,显示消息,等等)。否则,每个可能的值都应该有一个案例,即使它是空的,这样就可以清楚地表明该值是有效的,但是你打算不做任何事情。
答案 1 :(得分:0)
如果在默认情况下抛出异常,则永远不会执行中断,因此您可以将其保留。我个人使用大括号来避免在处理交换机时的可读性差。
例如:
switch (variable) {
case 1: {
code;
mode code;
break;
}
default: {
break;
}
}
没有大括号,反而很好地缩进它也很好读。 例如:
switch (variable) {
case 1:
code;
mode code;
break;
default: {
break;
}
答案 2 :(得分:0)
虽然它不是必需的(因为它会在没有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错误https://www.imperialviolet.org/2014/02/22/applebug.html
为例