反转一个十进制数,正负数边界溢出报错,边界设定了,为什么还是溢出?
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-"
其实:
很有意思吧?