zoukankan      html  css  js  c++  java
  • 字符串转换为int

    public static int strToInt(String str) {
            char[] s = str.trim().toCharArray();
            int len = s.length;
            // 去除空格后长度为0则返回0
            if (len == 0)
                return 0;
            int sign = 1;
            int i = 0;
            int currNum = 0;
            // 确定符号
            if (s[i] == '-') {
                sign = -1;
                i++;
            } else if (s[i] == '+')
                i++;
            // 对连续数字进行遍历
            while (i < len && isDigit(s[i])) {
                // 当前位置对应的数字
                int k = sign * (s[i] - '0');
                // 判断ans如果加上当前位的数字是否超出范围
                // 此处不能计算出新的ans再比较,因为计算出的新的ans可能已经超出范围了
                if (sign > 0 && currNum > (Integer.MAX_VALUE - k) / 10)
                    return Integer.MAX_VALUE;
                if (sign < 0 && currNum < (Integer.MIN_VALUE - k) / 10)
                    return Integer.MIN_VALUE;
                // 加入当前位的数字
                currNum = currNum * 10 + k;
                i++;
            }
            return currNum;
        }
    
        public static boolean isDigit(char c) {
            return c - '0' >= 0 && c - '9' <= 0;
        }
       char strAry[] = str.trim().toCharArray();
            if (strAry.length == 0) {
                return 0;
            }
            int len = strAry.length;
            int i = 0;
            int retNum = 0;
            int sign = 1;//符号位正数
            if (strAry[0] == '-') {
                sign = -1;
                i++;
            }
    
            for (; i < len; i++) {//是数字才能转换
                if (strAry[i] - '0' >= 0 && '9' - strAry[i] >= 0) {
                    int currNum = sign * (strAry[i] - '0');//转换为数字
                    if (retNum > 0 && (retNum > (Integer.MAX_VALUE - currNum) / 10)) {
                        return Integer.MAX_VALUE;
                    }
    
                    if (retNum < 0 && (retNum < (Integer.MIN_VALUE - currNum) / 10)) {
                        return Integer.MIN_VALUE;
                    }
    
                    retNum = retNum * 10 + currNum;
                }
            }
            return retNum;
  • 相关阅读:
    事件(五):事件委托
    事件(四):事件类型
    【[ZJOI2005]午餐】
    【[POI2006]OKR-Periods of Words】
    【2^k进制数】
    【[SHOI2015]脑洞治疗仪】
    【[NOI2016]区间】
    【[SHOI2014]概率充电器】
    【逛公园】
    【[CQOI2014]数三角形】
  • 原文地址:https://www.cnblogs.com/zzq-include/p/13581975.html
Copyright © 2011-2022 走看看