0
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 应该是一个无法访问的语句。我试图构建一种将数字四舍五入到给定小数位的方法。

此外,还应缺少退货声明。

谢谢您的帮助!

4

5 回答 5

3

如果您的方法抛出异常,它也不能返回值。

您必须选择是否抛出异常:

if (n < 0) {
    throw new IllegalArgumentException("Anzahl der Nachkommastellen darf nicht negativ sein.");
}

或返回0.0

if (n < 0) {
    return 0.0 ;
}

但你不能两者都做。

并且您必须有一个最终的 return 语句,以防您的条件都不成立。添加一个 return 语句作为方法的最终语句。

于 2018-01-02T12:54:42.897 回答
1

您不会错过退货声明。其实你有那个额外的。一旦你抛出异常,执行就会在那里终止。因此,没有机会达到该回报。因此,返回线无法到达。根据您的业务选择一个。要么返回,要么异常。

于 2018-01-02T12:54:32.037 回答
0

您在之前的语句中抛出异常。

这结束了方法的执行。

您可能对随机缩进和大括号位置感到困惑。您应该尝试坚持标准格式。编写干净的代码有助于避免错误。

于 2018-01-02T12:54:24.883 回答
0

通过抛出异常,您将阻止该方法进一步执行。
如果异常没有被捕获,整个线程将被中断并关闭。

如果您不希望这样,请返回一些只能表示错误的值

于 2018-01-02T12:56:01.637 回答
0

当您抛出异常时,java 编译器停止执行当前方法并且控件移出当前方法,我建议您使用 if else 语句来解决您的问题,这样如果第一个条件为真,它就不会跳过命令“返回 0.0”

于 2018-01-08T12:35:01.397 回答