Я написал метод для изменения знака int. Если перевернутое число не находится в диапазоне INT_MAX и INT_MIN, оно вернет 0. Оно работает почти во всех случаях, кроме -2147483648.
Во время отладки я обнаружил, что код неправильно обрабатывает знак для -2147483648, пока его работает для входных данных с разными знаками.
Может кто-нибудь объяснить, почему Math.abs(x) не работает должным образом для этого тестового примера.
Метод приведен ниже.
public int reverse(int x) {
boolean flag = (x>0);
x = Math.abs(x);
String num = new StringBuilder(Integer.toString(x)).reverse().toString();
long temp = Long.parseLong(num);
if(!flag){
temp = -temp;
}
if((Integer.MAX_VALUE < temp) || ( temp < Integer.MIN_VALUE)){
return 0;
}
return (int) temp;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-numberf
Math.abs(x) не работает должным образом для -2147483648, что дает исключение NumberFormat. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Math.abs(x) не работает должным образом для -2147483648, что дает исключение NumberFormat.
Anonymous » » в форуме JAVA - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-