swtch语句中的java不可访问代码
我已经用Java编写了以下方法。但我在包含return(Constants.SUCCESS)的行上收到错误消息unreachable code
如果我对该行进行注释,则不会收到错误消息。现在我的疑问是,如果我评论这行代码,为什么我没有收到错误消息?如果我对行进行注释,则不会向调用部分返回SUCCESS值。我认为应该有一个return语句,如果没有执行所有“if循环”和default,那么就没有return语句。我想最后一个return语句无论如何都会执行。我在结尾也尝试了return(Constants.SUCCESS)语句(注释行),但没有成功。 因此,为了返回成功,我是否需要在每个case语句下的每个“if”循环之后返回成功(为每个case语句创建“else”部分)
static int validateStartAndEndStringOrder(String startStr, String endStr, ArrayList<String> swaraPool, Constants.PatternType ptrnType) {
switch (ptrnType) {
case AROHA_INCREASING: {
if (swaraPool.indexOf(endStr) < swaraPool.indexOf(startStr)) {
System.out.println("End string is before the start String");
return (-1);
}
}
case AROHA_DECREASING: {
if (swaraPool.indexOf(startStr) < swaraPool.indexOf(endStr)) {
System.out.println("End string is before the start String");
return (-1);
}
}
case AVAROHA_INCREASING: {
if (swaraPool.indexOf(endStr) < swaraPool.indexOf(startStr)) {
System.out.println("End string is before the start String");
return (-1);
}
}
case AVAROHA_DECREASING: {
if (swaraPool.indexOf(startStr) < swaraPool.indexOf(endStr)) {
System.out.println("End string is before the start String");
return (-1);
}
}
default: {
System.out.println("Invalid Enumeration Type");
return(-1);
}
return (Constants.SUCCESS);
}
//return (Constants.SUCCESS);
}
# 1 楼答案
默认部分包含
你期待什么
# 2 楼答案
我怀疑您想在
case
块的末尾添加一个break;
。否则,代码只是从上到下运行(就像代码中的任何其他地方一样)如果你放置一个
break;
,它将跳出switch
块,这似乎是你想要的例如
# 3 楼答案
switch ... case 1 ... case n ... default
覆盖所有控制路径(default
将捕获所有剩余案例)。由于您显式地从每个块返回,因此程序控制无法超越switch
块您的编译器正在帮助发出错误
在
switch
块中的每个case
之间使用break;
语句将控制流移动到块的末尾