Недоступные заявления, если условие Java

double runde(double x, int n) {
    if (n < 0) {
        throw new IllegalArgumentException("Anzahl der Nachkommastellen darf nicht negativ sein.");

    return 0.0 ; }


     if (n==x) {/* Ist n=x? Wenn ja, dann nicht runden*/
    return x ; } /* X dementsprechend als Rückgabewert */


    if (n>0) {/* Test ob n größer null ist*/ 
    return Math.round(x*Math.pow(10,n))/Math.pow(10,n) ; }}

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

кроме того, должно быть отсутствующее заявление о возврате.

Спасибо за помощь!

5 ответов

Если ваш метод выдает исключение, он также не может вернуть значение.

Вы должны выбрать, выдавать ли исключение:

if (n < 0) {
    throw new IllegalArgumentException("Anzahl der Nachkommastellen darf nicht negativ sein.");
}

или вернуть 0.0:

if (n < 0) {
    return 0.0 ;
}

но вы не можете сделать оба.

И вы должны иметь окончательное заявление о возврате в случае, если ни одно из ваших условий не выполняется. Добавьте инструкцию возврата в качестве окончательной инструкции метода.

Вы не пропускаете заявление на возврат. На самом деле у вас есть это дополнительно. Как только вы бросаете исключение, выполнение заканчивается там. Следовательно, нет никаких шансов достичь этого возвращения. Следовательно, обратная линия недоступна. В зависимости от вашего бизнеса выберите один. Либо возврат, либо исключение.

Вызывая исключение, вы предотвращаете дальнейшее выполнение метода.
Если исключение не перехвачено, весь поток будет прерван и закрыт.

Если вы этого не хотите, верните некоторое значение, которое может означать только ошибку

Когда вы генерируете исключение, компилятор java прекращает выполнение текущего метода, а элемент управления выходит из текущего метода, я бы порекомендовал вам использовать оператор if else для вашей проблемы, чтобы, если первое условие истинно, он не пропускал команда "вернуть 0.0"

Вы кидаете исключение в заявление перед тем

Это завершает выполнение метода.

Возможно, вы смущены случайным отступом и расположением скобок. Вы должны попытаться придерживаться стандартного форматирования. Написание чистого кода помогает избежать ошибок.

Другие вопросы по тегам