LeetCode提交编译错误提示求解答

xyh1re 2017-07-05 09:27:30
LeetCode第七题Reverse Integer,用比较笨的办法做,代码如下:

public class Solution {
public int reverse(int x) {
int re = 0;
if (x < 0) {
re = 0 - x;
} else {
re = x;
}
String s = String.valueOf(re);
int length = s.length();
int n = s.length() / 2;
char[] ch = s.toCharArray();
for (int i = 0; i < n; i++) {
char c = ch[i];
ch[i] = ch[length - 1 - i];
ch[length - 1 - i] = c;
}
s = new String(ch);
long a = 0L;
a = Long.parseLong(s);
if (x > 0 && a > Integer.MAX_VALUE) {
return 0;
}
if (x < 0 && a < (0 - Integer.MIN_VALUE)) {
return 0;
}
if (x > 0) {
return Integer.parseInt(s);
} else {
return 0 - Integer.parseInt(s);
}
}
}

提交时错误:
Runtime Error Message: Line 20: java.lang.NumberFormatException: For input string: "8463847412-"
Last executed input: -2147483648
也就是a = Long.parseLong(s);这行代码的错误,按理说程序运行到这一步是不会出现不能转化为long类型的字符串s的情况,不明白该怎么改,请大家多多指教!谢谢!
...全文
529 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyh1re 2017-07-05
  • 打赏
  • 举报
回复
明白了,如果输入是-2^31的话,第五行re的值就会溢出

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧