题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
实现思想:
- 将整型转化为字符串;
- 利用字符串进行顺序反转;
- 利用异常处理机制,处理反转后的溢出;
- 对输入的负数特殊处理
源代码:
import java.util.Scanner;
class Solution {
public static int reverse(int x) {
try {
if (x >= 0) {
return reverseSub(x);
} else {
x = -x;
int y = - reverseSub(x);
return y;
}
} catch (Exception ex) {
return 0;
}
}
public static int reverseSub(int x) {
String str1 = String.valueOf(x);
int num = str1.length();
StringBuffer sb1 = new StringBuffer();
int num2 = num;
for (int i = 0; i < num; i++) {
sb1.append(str1.charAt(num2 - 1));
num2--;
}
String str2 = sb1.toString();
int y;
y = Integer.parseInt(str2);
return y;
}
}
public class IntegerInversion {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x = in.nextInt();
int y = Solution.reverse(x);
System.out.println(y);
}
}