具有此布尔值的无法访问的语句

时间:2014-10-10 05:01:24

标签: java java.util.scanner unreachable-code

我在使用此布尔声明时遇到无法访问的语句错误。 我知道无法访问通常意味着毫无意义,但我需要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;


        }

6 个答案:

答案 0 :(得分:0)

是的,您在上一行中有一个return。方法已经完成。

return monthlyPayment; // <-- the method is finished.
boolean isValid; // <-- no, you can't do this (the method finished on the
                 //     previous line).

答案 1 :(得分:0)

您无法在return语句后执行任何代码。执行return后,该方法将完成。

return monthlyPayment;
//this and the rest of the code below will never be executed
boolean isValid;

答案 2 :(得分:0)

因为你的行返还monthlyPayment;在return语句之后,此范围中的额外代码将无法访问......因为return语句必须是该方法的最后一个语句Scope

答案 3 :(得分:0)

方法在您的第一个返回语句中完成。

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

答案 4 :(得分:0)

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

Unreachable并不意味着毫无意义 - 这意味着无论编译器试图通过抛出错误告诉您什么,这段代码永远不会被执行。

因此,如果您不需要,可以删除unreachable代码块,或者正确或有条件地将您的方法修改为return

例如 -

//even if you use the below statement in your code
//compiler will throw unreachable code exception
return monthlyPayment;;

答案 5 :(得分:0)

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