Как получить тип byte после операции int/int

253
19 июня 2017, 19:58

Ситуация: нужно получить тип byte после операции int/int. Если результат входит в диапазон byte, то вывести его, если не входит, то вывести сообщение-ошибку. А так же обработать Exception при делении на 0 и Exception в принципе. Как заставить такой кусок кода работать? Пробовал в 3 строке через byte tempResult = (byte) (operand1 / operand2);, но в итоге получал для последнего вызова не то, что нужно.

public byte divisionByte(int operand1, int operand2) {
    try {
        byte tempResult = operand1 / operand2;
        if (tempResult >= 127 && tempResult <= -128) {
            System.out.println("Результат не входит в диапазон Byte.");
        } else
            System.out.println(operand1 + " / " + operand2 + " = " + tempResult);
        return tempResult;
    } catch (ArithmeticException e) {
        System.out.println(operand1 + " / " + operand2 + " = We can't divide by 0. " + e + ". Shame on you!");
        return 1;
    } catch (Exception e) {
        System.out.println("ERROR " + e);
        return 1;
    }
}

В Main классе один вызов должен отдать значение, второй сообщение об ошибке при делении на 0, третий что "Результат не входит в диапазон Byte"

calc.divisionByte(2, 2);
calc.divisionByte(2, 0);
calc.divisionByte(1000, 2);
Answer 1

Вы должны делить в int, проверять диапазон, и только затем преобразовывать к byte. Если вы сразу преобразовываете к byte, то, например, значение 257 молча превратится в 1, и результат будет неправильным. В вашем коде условие tempResult >= 127 && tempResult <= -128 никогда не нарушится, потому что тип tempResult уже byte!

Поменяйте тип tempResult на int.

Правильным дизайном для такой функции было бы сообщать о проблемах разными типами исключений. Писать на консоль в функции деления — очень плохо. Возможно, пользователь функции вовсе не использует её в консольном приложении. Или приложение-то консольное, но он вывел что-то на консоль до вызова функции, и рассчитывает вывести что-то после.

READ ALSO
Как качать .json с интернета, а не из приложения?

Как качать .json с интернета, а не из приложения?

Использую данные в формате JSON , которые хранятся внутри приложения в папке assets/station/musicjson

278
Параметры метода Java

Параметры метода Java

Как сделать, чтобы s1 и s2 передавались в setLogView по отдельности, а там складывались?

590
Не обновляется ListView после подгрузки

Не обновляется ListView после подгрузки

Подскажите не работает добавление в ListViewЗапрос работает, а список не обновляется

275
конвертация json в java class

конвертация json в java class

Делаю погоду и столкнулся с проблемой конвертации json в javaПроблема в том что сайт http://bulk

319