如果条件 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,则无法访问语句的主要内容,如果未能解决你的问题,请参考以下文章

条件后无法访问的语句[关闭]

为啥我在 Java 中出现无法访问的语句错误?

为啥 Java 会出现“无法访问的语句”编译器错误?

java - 无法访问的语句帮助(链表)

如果以编程方式创建,则无法访问 UIImageView

Java错误:创建新的链表节点时无法访问语句[关闭]