将数字字符串转化成整数值

来源:互联网 发布:java 方法名 编辑:程序博客网 时间:2024/06/07 05:29
/** * Created by lxw, liwei4939@126.com on 2017/10/31. * 将数字字符串转化成整数值 */public class strToInt {    public static boolean isValid(char[] arr){        if(arr[0] != '-' && (arr[0] < '0' || arr[0] > '9')){            return false;        }        if(arr[0] == '-' && (arr.length == 1 || arr[1] == '0')){            return false;        }        if(arr[0] == '0' && arr.length > 1){            return false;        }        for (int i =1; i< arr.length; i++){            if(arr[i] < '0' || arr[i] > '9'){                return false;            }        }        return true;    }    public static int convert(String str){        if(str == null || str.equals("")){            return 0;        }        char[] strArr = str.toCharArray();        if(!isValid(strArr)){            return 0;        }        boolean posi = strArr[0] == '-'? false : true;        int minq = Integer.MIN_VALUE / 10;        int minr = Integer.MIN_VALUE % 10;        int res = 0;        int cur = 0;        for (int i = posi ? 0 : 1; i < strArr.length; i++){            cur = '0' - strArr[i];            if(res < minq || (res == minq && cur < minr)){                return 0;            }            res = res *10 +cur;        }        if(posi && res == Integer.MIN_VALUE){            return 0;        }        return posi ? -res : res;    }    public static void main(String[] args){        String str1 = "123";        System.out.println(convert(str1));        String str2 = "023";        System.out.println(convert(str2));        String str3 = "a23";        System.out.println(convert(str3));    }}