У меня проблема в java коде метода, который возвращает деление двух чисел - PullRequest
0 голосов
/ 19 февраля 2020

В этом коде реализован метод деления, поэтому я хочу обработать 3 случая, когда деление не определено с использованием try catch и throws, но при этом я получаю сообщение об ошибке, что метод деления должен возвращать float. package calculator3;

// Класс реализует интерфейс publi c Реализация класса реализует cal c {

//Add function
    public int add(int x, int y) {
        int ans1 = x + y ; 
        return ans1 ;

    }

    //Divide function
    public float divide(int x, int y) throws RuntimeException{
        try {
            if(y == Double.POSITIVE_INFINITY || y == Double.NEGATIVE_INFINITY || y == 0 ) {
                throw new ArithmeticException("invalid_division");

            }
            else {        
                return x / y ;
            }

        }catch  (ArithmeticException invalid_division ) {
            System.out.println("invalid_division");
        }
}
}   

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Ваш divide тип возвращаемого значения float.

Значение int никогда не будет равно Double.POSITIVE_INFINITY или Double.NEGATIVE_INFINITY, поскольку они не находятся в диапазоне возможных значений.

Функция не будет выдавать ошибку, если она поймана.

Принимая выше 3 баллов:

//divide
public float divide(int x, int y) throws ArithmeticException{
        if (y == 0) throw new ArithmeticException("invalid_division");
        return (float)x / y; // cast x to float so a float will result
}

0 голосов
/ 19 февраля 2020

Вы фактически не генерируете исключение, однажды перехватывая его, поэтому компилятор будет жаловаться, что вы пропустили возврат в вашем методе divide().

добавить:

throw e;

к вашему предложению поймать

...