java反转字符串边界溢出
反转一个十进制数,正负数边界溢出报错,边界设定了,为什么还是溢出?
class Solution {
public int reverse(int x) {
String s=new StringBuffer(Math.abs(x)+"").reverse().toString();
Integer newValue = Integer.valueOf(s);
if(x>0){
if(newValue>Integer.MAX_VALUE ||newValue<Integer.MIN_VALUE){
return 0;
}else{
return (int) newValue;
}
}else{
return (int)(0-newValue);
}
}
}
public class MainClass {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = in.readLine()) != null) {
int x = Integer.parseInt(line);
int ret = new Solution().reverse(-2147483648);
String out = String.valueOf(ret);
System.out.print(out);
}
}
}
错误:
Error:
Line 5: java.lang.NumberFormatException: For input string: "8463847412-"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
其实:
很有意思吧?
楼上说的没错。请查阅
Math.abs()
方法(参数为 int)的文档注释,片段如下:当方法的参数值等于 int 最小值时,结果为原值。