字符串转换成数字

2016-12-02  本文已影响65人  蛮大人我们走

算法不难,重点要注意的细节:

a.如果n>MaxInt/10,return MaxInt;
b.如果n==MaxInt/10,如果c>MaxInt%10, return MaxInt;

基本算法如下:

    static int MaxInt=(int)(~0>>1);
    static int MinInt=-(int)(~0>>1)-1;
     static void StringToInt(char[] input){
         if (input.length==0){
             //  return 0;'
             System.out.println("字符串为空!");
             return;
         }
        int sign=0;
        int n=0;
         if (input[0]=='-'){
             sign=-1;
         }
         if (sign<0){
             for (int j=0;j<input.length-1;j++){
                 input[j]=input[j+1];
             }
         }
        for (int i=0;i<input.length;i++){

            while ((input[i]-'0')<9&&(input[i]-'0'>=0)){
                int c=input[i]-'0';
                if (sign>0&& n>(MaxInt/10)){
                    n=MaxInt;
                    break;
                }else if (sign>0&&n==MaxInt&&c>(MaxInt%10)){
                    n=MaxInt;
                    break;
                }else if (sign<0&&((n>MaxInt/10)||(n==MaxInt/10&&c>MaxInt%10))){
                    n=MinInt;
                    break;
                }
                n=n*10+c;
            }

        }
         System.out.println(n);
       // return sign>0?n:-n;}

另一个思路:
将字符串转成char数组后,将其中数字提取到int数组a中去,并将MaxInt转成int数组b,首先根据输入数组的长度判断是否超出MaxInt的长度,超过 则越界;a.length==b.length时,再从高位开始进行比较,if(a[i]>b[i]) 溢出;若a.length<b.length,明显不会溢出。

上一篇 下一篇

猜你喜欢

热点阅读