我试图将字符串转换为整数,但我无法打印出结果

时间:2016-11-09 16:21:22

标签: java string

我正在尝试将字符串转换为整数但是当我尝试打印结果时,我无法获得正确的输出。

package com.company;

public class Main {

    public static void main(String[] args){
        String str ="-123456";
        int i = atoi(str);
        System.out.println(i);
    }

    public static int atoi(String str){
        if (str == null || str.length() < 1)
            return 0;
        str = str.trim();
        char flag = '+';

        int i = 0;
        if (str.charAt(0) == '-'){
            flag = '-';
            i++;
        } else if (str.charAt(0) == '+'){
            i++;
        }

        double result = 0;
        while (str.length() > 1 && str.charAt(i) >= '0' && str.charAt(i) <= '9'){
            result = result * 10 + (str.charAt(i)-'0');
            i++;
        }

        if (flag == '-'){
            result = -result;
        }

        if (result > Integer.MAX_VALUE){
            return Integer.MAX_VALUE;
        }
        if (result < Integer.MIN_VALUE){
            return Integer.MIN_VALUE;
        }
        return (int) result;
    }
}

This is the result after I run the code

1 个答案:

答案 0 :(得分:0)

更改为:注意i&lt; str.length()而不是str.length()&gt; 1

说明:您的错误是“索引超出范围”,这意味着您正在尝试访问不在直线长度范围内的字符,并且在这种情况下str.charAt(7),这不是'存在,所以你必须将i限制为小于字符串的长度。

while (i < str.length() && str.charAt(i) >= '0' && str.charAt(i) <= '9'){
        result = result * 10 + (str.charAt(i)-'0');
        i++;
}