1. 程式人生 > >Java 實現把字串轉換成整數

Java 實現把字串轉換成整數

將一個字串轉換成一個整數,要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是一個合法的數值則返回0 。
輸入一個字串,包括數字字母符號,可以為空; 

如果是合法的數值表達則返回該數字,否則返回0;

程式碼

    public static int parseString2Int(String str) {
        if (Strings.isNullOrEmpty(str)) {
            return 0;
        }
        // 數字的正負,預設是正數
        int symbol = 1;
        char[] array = str.toCharArray();
        int sum = 0;
        // 如果第一位是'-',說明結果應該是個負數,'+'不需要處理symbol
        // 同時替換該位置上的字元為0,這樣在下面的處理中,可以認為是跳過該字元
        // 因為0 * 10還是0
        if (array[0] == '-') {
            symbol = -1;
            array[0] = '0';
        } else if (array[0] == '+') {
            array[0] = '0';
        }
        for (int i = 0; i < array.length; i++) {
            // 如果不是數字,而是其他字母符號一類非數字字元,則直接返回0
            if (array[i] < '0' || array[i] > '9') {
                return 0;
            }
            // sum * 10是為了將當前已獲得數字整體左移一位,讓新的數字可以處於個位上,比如"12"
            // 第一次拿出1,在第二次拿出2的時候,1應該在十位上,2在個位上,所以 1 * 10 + 2 = 12
            // array[i] - '0',這裡減去字元'0',是因為字元'0'-'9'的ascii碼值與其對應的數字相差48,而'0'的ascii碼值正好是48
            sum = sum * 10 + array[i] - '0';
        }
        return sum * symbol;
    }

    public static void main(String[] args) {
        int result = parseString2Int("123");
        System.out.println(result);
    }