Ситуация: нужно получить тип 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);
Вы должны делить в int, проверять диапазон, и только затем преобразовывать к byte. Если вы сразу преобразовываете к byte, то, например, значение 257 молча превратится в 1, и результат будет неправильным. В вашем коде условие tempResult >= 127 && tempResult <= -128 никогда не нарушится, потому что тип tempResult уже byte!
Поменяйте тип tempResult на int.
Правильным дизайном для такой функции было бы сообщать о проблемах разными типами исключений. Писать на консоль в функции деления — очень плохо. Возможно, пользователь функции вовсе не использует её в консольном приложении. Или приложение-то консольное, но он вывел что-то на консоль до вызова функции, и рассчитывает вывести что-то после.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости