-2

このブール宣言で到達不能ステートメント エラーが発生します。通常、到達不能は無意味であることはわかっていますが、while ループを機能させるには isValid ステートメントが必要です。なぜこのエラーが発生するのですか?どうすれば修正できますか? これが私のコードです。

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 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前の行に a があります。メソッドが実行されます。

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 に答える