如果条件 Java,则无法访问语句
Posted
技术标签:
【中文标题】如果条件 Java,则无法访问语句【英文标题】:Unreachable Statements if condition Java 【发布时间】:2018-06-12 04:24:42 【问题描述】:double runde(double x, int n)
if (n < 0)
throw new IllegalArgumentException("Anzahl der Nachkommastellen darf nicht negativ sein.");
return 0.0 ;
if (n==x) /* Ist n=x? Wenn ja, dann nicht runden*/
return x ; /* X dementsprechend als Rückgabewert */
if (n>0) /* Test ob n größer null ist*/
return Math.round(x*Math.pow(10,n))/Math.pow(10,n) ;
嘿,我不明白为什么 return 0.0 应该是一个无法访问的语句。 我试图构建一个将数字四舍五入到给定小数位的方法。
此外,还应缺少退货声明。
感谢您的帮助!
【问题讨论】:
如果抛出异常,则方法执行结束 因为你会在你的 if (n 良好的缩进有助于立即发现此类问题 ;-) 编译器无法确定您的某个 if 条件是否为真。因此,理论上,执行可以在最后一个 if 之后通过,然后返回丢失。 如果n
应该是一个精度,那么没有理由将它与x
进行比较。
【参考方案1】:
如果你的方法抛出异常,它也不能返回值。
你必须选择是否抛出异常:
if (n < 0)
throw new IllegalArgumentException("Anzahl der Nachkommastellen darf nicht negativ sein.");
或返回0.0
:
if (n < 0)
return 0.0 ;
但你不能两者兼得。
并且你必须有一个最终的 return 语句,以防你的条件都不为真。添加return语句作为方法的最后语句。
【讨论】:
【参考方案2】:您没有遗漏退货声明。其实你有那个额外的。一旦你抛出异常,执行就会在那里终止。因此,没有机会达到该回报。因此,返回线无法到达。根据您的业务选择一个。返回或异常。
【讨论】:
实际上缺少最后的返回,即使在逻辑上无法达到。【参考方案3】:你在前面的语句中抛出异常。
这将结束方法的执行。
您可能对随机缩进和大括号位置感到困惑。您应该尝试坚持标准格式。编写干净的代码有助于避免错误。
【讨论】:
【参考方案4】:通过引发异常,您将阻止该方法进一步执行。 如果异常没有被捕获,整个线程将被中断并关闭。
如果你不想这样,返回一些只能表示错误的值
【讨论】:
【参考方案5】:当您抛出异常时,java 编译器会停止执行当前方法,并且控件会移出当前方法, 我建议您为您的问题使用 if else 语句,这样如果第一个条件为真,它就不会跳过命令“return 0.0”
【讨论】:
以上是关于如果条件 Java,则无法访问语句的主要内容,如果未能解决你的问题,请参考以下文章