题目要求是把输入的整形数颠倒位置,如123变成321,-123变成-321
这是我的处理的函数
public int reverse(int x) {
char num;
String s = String.valueOf(x);
char[] c = s.toCharArray();
char[] c1 = String.valueOf(Integer.MIN_VALUE).toCharArray();
char[] c2 = String.valueOf(Integer.MAX_VALUE).toCharArray();
if(c[0]=='-'){
c[0] = '-';
if(c.length>11)return 0;
for(int i=1,j=c.length-1;i<=c.length-1;i++){
num = c[i];
c[i] = c[j];
c[j] = num;
j--;
if(j-i<=1)break;
}
if(c.length==11){
for(int i=1;i<c.length-1;i++){
if(c[i]<c1[i])break;
else return 0;
}
}
}
else{
if(c.length>10)return 0;
for(int i=0,j=c.length-1;i<=c.length-1;i++){
num = c[i];
c[i] = c[j];
c[j] = num;
j--;
if(j-i<=1)break;
}
if(c.length==10){
for(int i=0;i<c.length-1;i++){
if(c[i]>c2[i])break;
else return 0;
}
}
}
int x1 = Integer.parseInt(String.valueOf(c));
return x1;
}
出现错误Runtime Error Message: Line 41: java.lang.NumberFormatException: For input string: "9646324351"
Last executed input: 1534236469
因为传入的是int类型的数,所以9646324351比int类型最大的数要大,怎么处理这个问题
------解决思路----------------------
9,646,324,351是整数,但不是整形,整形是计算机术语,是有范围的,java中是-2^31~2^31-1(2,147,483,647)
------解决思路----------------------
两种解决方案:
1.用大一点的数据类型:Long
2.用字符传解决
方案2:如下:
public String reverse(String str) {
String strResult = "";
if(str!=null&&!str.trim().equals("")){
char[] arrayCh = str.toCharArray();
for(int i=arrayCh.length-1;i>0;i--){
strResult = strResult + arrayCh[i];
}
if(arrayCh[0] =='-'){
strResult = "-"+ strResult;
}else{
strResult = strResult + arrayCh[0];
}
}
return strResult;
}
------解决思路----------------------
试试,应该是可以的了,要是不存在负数,就更加简单了,只要一行代码就解决了
/**
* Created by puruidong on 2015/4/2.
*/
public class TestDemo {
public static void main(String[] args) {
System.out.println(revseStr(-123456));
}
private static String revseStr(Integer s){
//反转数字.
if(s<0){
String rs = s.toString().substring(1) ;
return new StringBuffer(rs).reverse().insert(0,"-").toString();
}
return new StringBuffer(s.toString()).reverse().toString();
}
}
------解决思路----------------------
> 因为传入的是int类型的数,所以9646324351比int类型最大的数要大,怎么处理这个问题
程序里加异常处理,catch到异常了,打印错误信息是一种解决办法