代码提示unreachable code:判断数字含0终止方法遇不可达代码
嘿,我一眼就瞅出问题所在啦!这个「unreachable code」的提示完全是因为你代码里的一个小疏忽——if条件后面多写了分号;。
问题根源拆解
你看这段代码:
if (dig1 == 0);{ return; }
这里的分号;是个空语句,它会被当作if条件的执行体。也就是说,不管dig1是不是0,这个if的逻辑都已经“执行完毕”了。紧接着的{ return; }就变成了独立的代码块,不管前面的条件是否成立,这个return都会无条件执行!
所以程序运行到第一个return就直接终止方法了,后面的if (dig2 == 0)及所有后续代码根本没机会被执行,IDE自然会提示「unreachable code」。
修正后的代码
只需要把每个if后面的分号删掉,让{ return; }成为if的执行体就行:
static void method(int y) { int dig1 = y % 10; int dig2 = y / 10 % 10; int dig3 = y / 100 % 10; if (dig1 == 0) { // 去掉多余的分号 return; } if (dig2 == 0) { // 现在这段代码就能正常触发了 return; } // ... 后续的位数判断逻辑 }
结合你的输入场景验证
你的输入范围是122-133:
- 当传入130时,
dig1 = 130 % 10 = 0,第一个if条件成立,执行return终止方法,完全符合你的需求。 - 其他数字(比如122、133)的每一位都不为0,会依次跳过所有
if判断,继续执行后续代码。
这样修改后,「unreachable code」的提示就会消失,逻辑也完全正确啦!
内容的提问来源于stack exchange,提问作者MarioF.




