剑指 把字符串转换成整数

将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

public class test4 {
    public static int byFunc(String s){
        return Integer.valueOf(s);
    }

    public static int convertConventional(String s){
        if(s.length()==0){
            return 0;
        }
        char[] c = s.toCharArray();
        int flag = 0;
        if(c[0] == '+'){
            flag = 1;
        }else if (c[0] == '-'){
            flag = 2;
        }

        int start = flag > 0 ? 1 : 0;
        for(int i = start; i < c.length; i++){
            if(!Character.isDigit(c[i])){
                return 0;
            }
        }
        return Integer.valueOf(s);
    }

    public static int myConvert(String s){
        if(s.length() == 0){
            return 0;
        }
        char[] chars = s.toCharArray();
        //判断是否存在符号位
        int flag = 0;
        if(chars[0] == '+'){
            flag = 1;
        }else if (chars[0] == '-'){
            flag = 2;
        }

        int start = flag > 0 ? 1 : 0;
        int res = 0;
        for(int i = start; i < chars.length;i++){
            if(Character.isDigit(chars[i])){
                int temp = chars[i] - '0';
                res = res * 10 + temp;
            }else{
                return 0;
            }
       }
        return flag !=2 ? res : -res;
    }

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            String input = in.nextLine();
            //System.out.println("使用库函数:"+byFunc(input));
            System.out.println("我对库函数优化:"+convertConventional(input));
            System.out.println("我的方法:"+myConvert(input));
        }
        in.close();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_18287147/article/details/106246184