public class ReverseString {
public static void main(String args[]) {
ReverseString rs = new ReverseString();
System.out.println(rs.reverse(-84638));
System.out.println(rs.reverse(5464867));
}
public long reverse(int number) {
boolean isNegative = number < 0;
StringBuilder reverseBuilder = new StringBuilder();
String reversedString = reverseBuilder.append(Math.abs(number)).reverse().toString();
long reversedStringValue = Long.parseLong(reversedString);
if(isNegative) {
return reversedStringValue * -1;
} else {
return reversedStringValue;
}
}
}
Этот код обеспечивает вывод, который вы упомянули в требовании. И это также поддерживает целочисленное переполнение. Ваше требование - преобразовать значения int. Можно получить преобразованное значение в более высоком формате, поскольку преобразованное значение может не входить в диапазон int. Я изменил тип возврата обратного метода на long.
Я обнаружил несколько проблем в вашем коде.
public int reverse(int x) {
if(x>Integer.MAX_VALUE || x<Integer.MIN_VALUE) {
return 0;
}
Над сегментом кода нет смысла проверять, находится ли значение внутри диапазона int, поскольку оно уже получено в параметре в виде строки. Он должен выдать ошибку перед выполнением строк кода, так как он не может соответствовать большему значению переменной int.
Наконец, используемый вами номер int находится вне диапазона int. (-8463847412)