当我输入以下方法并用Java编译时,我得到了“错误:无法访问的语句”,为什么?
String getRankChar(int rank,boolean isFront)
{
switch (rank)
{
case 0 : return isFront?"<":">";break;
case 1 : return isFront?"[":"]";break;
case 2 : return isFront?"[":"]";break;
case 3 : return isFront?"(":")";break;
case 4 : return isFront?"(":")";break;
default : return " ";break;
}
}
答案 0 :(得分:10)
每个break
语句后都有return
语句。 所有这些break
语句都无法访问,正是因为您在每个语句之前返回。
根据JLS的section 14.21:
如果由于无法访问语句而无法执行该语句,则为编译时错误。
和
[...]如果S之前的语句可以正常完成,则非空交换块中的每个其他语句S都是可到达的。
...
break
,continue
,return
或throw
声明无法正常完成。
return
语句无法正常完成,因此无法访问break
语句(对于每种情况)。
只需删除break
语句即可。
答案 1 :(得分:2)
因为默认情况下的break语句永远不会执行,因为它总是返回“”并退出方法。
答案 2 :(得分:1)
因为您return
然后是break
。返回已经退出该方法,因此break
语句无法访问。
答案 3 :(得分:1)
因为你之前做过返回,所以无法达到每行中的break语句。
答案 4 :(得分:0)
返回语句后的代码无法访问,因此请删除return语句之后的任何内容。
因为在你回来之后,没有什么可以执行的。
答案 5 :(得分:0)
return
停止执行该功能
因此,您的所有break
都无法执行。
break
不是结束case
的神奇咒语;这只是一种确保控制不会流过的方法
如果您使用不同的语句来停止控制流(return
,continue
或throw
),则不需要它。
答案 6 :(得分:0)
return表示退出调用方法的点
并且指针不再继续
因此,您的程序在任何情况下都不会达到您的break
声明
因此错误