2014-10-10 3 views
-3

Я получаю недостижимую ошибку с этим булевым объявлением. Я знаю, что недостижимый обычно означает бессмысленный, но мне нужен оператор isValid для моего цикла while. Почему я получаю эту ошибку и как ее исправить? Вот мой код.Unreachable Statement with this boolean

Я получаю сообщение об ошибке 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; 


     } 

ответ

0

Да, у вас есть return на предыдущей строке. Метод выполнен.

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

Вы не можете выполнить какой-либо код после инструкции return. Как только return будет выполнен, метод завершится.

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

Из-за вашей линии возврата ежемесячноPayment; после выражения возврата дополнительный код в этой области будет недоступен ...... так как оператором возврата должен быть последний последний оператор этого метода. Область

0

Метод закончен в вашем первом операторе возврата.

Либо вы можете положить это в какое-то состояние. так что будет возможность пойти дальше

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;; 
0

После возвращения метода строки после оператора возврата не будет достижим компилятор всегда предполагает, что возвращение является конечной точкой выполнения любого типа блока кода или метода

+1

да я принимаю @santhosh +1 :) – Raj

 Смежные вопросы

  • Нет связанных вопросов^_^