-2

我收到这个布尔声明的无法访问的语句错误。我知道无法访问通常意味着毫无意义,但我需要 isValid 语句才能让我的 while 循环正常工作。为什么我会收到此错误,我该如何解决?这是我的代码。

我在 boolean isValid 上遇到错误;

提前感谢您,您可能有任何意见。

public static double calculateMonthlyPayment(double loanAmount, double monthlyInterestRate, int months)
        {
            double monthlyPayment =
            loanAmount * monthlyInterestRate/
            (1 - 1/Math.pow(1 + monthlyInterestRate, months));
            return monthlyPayment;
            boolean isValid;
                      isValid = false;

            //while loop to continue when input is invalid
            while (isValid ==false)
            {
                System.out.print("Continue? y/n: ");
                                String entry;
                entry = sc.next();
                if (!entry.equalsIgnoreCase("y") && !entry.equalsIgnoreCase("n"))
                {
                    System.out.println("Error! Entry must be 'y' or 'n'. Try again.\n");
                }
                else
                {
                    isValid = true;
                } // end if

                sc.nextLine();

            } // end while
                        double entry = 0;
        return entry;


        }
4

6 回答 6

1

是的,你return在上一行有一个。方法完成。

return monthlyPayment; // <-- the method is finished.
boolean isValid; // <-- no, you can't do this (the method finished on the
                 //     previous line).
于 2014-10-10T05:03:41.537 回答
1

您不能在return语句之后执行任何代码。一旦return执行,该方法将完成。

return monthlyPayment;
//this and the rest of the code below will never be executed
boolean isValid;
于 2014-10-10T05:03:47.940 回答
1

由于您的线路返回每月付款;在 return 语句之后,此范围内的额外代码将无法访问......因为 return 语句必须是该方法的最后一条语句 Scope

于 2014-10-10T05:07:15.797 回答
1

该方法在您的第一个 return 语句中完成。

要么你可以把它放在某种条件下。这样就有可能走得更远

于 2014-10-10T05:07:34.460 回答
1

return monthlyPayment;声明导致了这个问题。当您说return这意味着您正在告诉控件返回时。不再执行。

Unreachable并不意味着毫无意义——它意味着无论如何都不会执行某些代码,这就是编译器试图通过抛出错误来告诉你的。

unreachable因此,如果您不需要它,您可以删除代码块,也可以return适当或有条件地修改您的方法。

例如 -

//even if you use the below statement in your code
//compiler will throw unreachable code exception
return monthlyPayment;;
于 2014-10-10T05:09:59.373 回答
1

返回方法后,return 语句后面的行将无法到达编译器始终假定 return 是任何类型的代码块或方法的执行结束点

于 2014-10-10T05:16:24.297 回答