#java
#java
Вопрос:
привет, я получаю сообщение об ошибке в моем методе, в котором говорится, что у моего метода нет возвращаемого типа, что сбивает с толку, потому что у него есть возвращаемый тип;
public double getPhoneRates() {
final int freeminutes=50;
double totalcharge;
double chargeperminute = 0.10;
double d = 0;
if(b.regularService() == true){
if(b.getMinutes()<=50)
return totalcharge=0;
else
d=b.getMinutes()-freeminutes;
d = d * chargeperminute;
return totalcharge= freeminutes d;
}
}
Комментарии:
1. logic101 — вы могли бы попробовать отформатировать свой пример кода, чтобы его было легче читать. Это помогло бы кому-то, пытающемуся ответить на ваш вопрос.
2. да, но она вложена в ваш if-оператор
3. Это весь метод? В нем отсутствует как минимум закрывающая скобка
4. Что, если
b.regularService() == false
? Тогда ваша функция ничего не возвращает (иначе говоря, double не возвращается!).5. для всех путей кода требуется оператор return.
Ответ №1:
Попробуйте это:
public double getPhoneRates()
{
final int freeminutes = 50;
double chargeperminute = 0.10;
double d = 0;
if (b.regularService() == true)
{
if (b.getMinutes() <= 50) return 0; //return 0
else d = b.getMinutes() - freeminutes;
d = d * chargeperminute;
return freeminutes d; //return result
}
return -1; //some default value
}
Комментарии:
1. @Peter, я просто выбрал произвольный #, укажите, что хочет OP по умолчанию
2. Если телефонная компания когда-нибудь начнет взимать плату по ставке -1, я присоединюсь завтра. 😉
Ответ №2:
Следующий код должен работать для вас:
public double getPhoneRates()
{
final int freeminutes = 50;
double chargeperminute = 0.10;
double d = 0;
if (b.regularService() == true)
{
if (b.getMinutes() <= 50) return 0;
else d = b.getMinutes() - freeminutes;
d *= chargeperminute;
d = freeminutes;
}
return d;
}
Во всех случаях в вашем методе должен быть возврат.
И обычно это лучший код, который возвращает только в одном месте из метода.
Ответ №3:
Проверьте свои фигурные скобки. Вы не всегда выполняете оператор return в своем методе.
Ответ №4:
Если вы явно скопировали код, то закрывающая скобка }
, похоже, отсутствует.. кроме того, не все ветви потока, похоже, что-то возвращают.