用JAVA编写一个函数,入参整数A,返回A的数字顺序反转,注意处理负数和溢出的情况
时间: 2024-09-18 08:06:01 浏览: 35
在Java中,你可以编写一个函数`reverseInteger(int a)`来实现整数的数字顺序反转。这里是一个简单的示例,考虑到负数和溢出情况:
```java
public class Main {
public static void main(String[] args) {
int a = 12345;
System.out.println(reverseInteger(a)); // 输出 "54321"
a = -987654321; // 负数测试
System.out.println(reverseInteger(a)); // 输出 "-123456789"
// 检查溢出情况,如果a非常大,可能会导致结果错误
long veryLarge = Long.MAX_VALUE + 1; // 非法的值,溢出将产生错误
try {
System.out.println(reverseInteger((int)veryLarge));
} catch (ArithmeticException e) {
System.out.println("Overflow occurred");
}
}
/**
* 函数 reverseInteger,接收一个整数,反转其数字顺序,同时处理负数和溢出情况
* @param a 待反转的整数
* @return 反转后的字符串表示的整数
* @throws ArithmeticException 如果输入过大导致溢出
*/
public static String reverseInteger(int a) throws ArithmeticException {
if (a == Integer.MIN_VALUE && sign(a) == -1) { // 处理最小负数溢出情况
throw new ArithmeticException("Overflow for minimum negative integer");
}
boolean isNegative = a < 0;
a = Math.abs(a);
StringBuilder reversedString = new StringBuilder();
while (a != 0) {
reversedString.append(a % 10);
a /= 10;
}
return isNegative ? "-" + reversedString.reverse() : reversedString.toString();
}
private static int sign(int num) {
return num >= 0 ? 1 : -1;
}
}
```
在这个函数中,我们首先判断是否为最小负整数,因为这是唯一一个直接翻转会超出范围的特殊情况。然后我们将数字转换成绝对值,并逐位反转它们。最后根据原数的正负性决定最终结果。
阅读全文