Java字符串异常

时间:2015-09-11 07:53:29

标签: java string exception

以下代码用于将字符串转换为long值。 当我通过StringToInt64("119.64");调用该函数时 它将错误显示为:

  

线程中的异常" main" java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-4           在java.lang.String.substring(String.java:1955)           在Test.StringToInt64(Test.java:13)           在Test.main(Test.java:25)

代码:

long StringToInt64(String s)
{
    long ret_val = 0, k = 1;

    for (int j = s.length(); j > 0; j--)
    {
        if(s.substring(j - 1,1) != ".") // Error Line
        {
            String t = s.substring(j-1,1);

            ret_val = (ret_val + (Integer.parseInt(t)*k));
            k = k * 10;
        }
    }

    return ret_val;
}

预期答案是11964。

请帮我解决这个问题......

1 个答案:

答案 0 :(得分:1)

你的beginIndex比endindex大,导致了这种情况。

您在第一次迭代中调用s.substring(5,1),其中5是beginIndex,1是endIndex

如果您要使用长度为1的字符串,则必须将代码更改为:

static long StringToInt64(String s)
{
    long ret_val = 0, k = 1;

    for (int j = s.length()-1; j > 0; j--)
    {
        if(!s.substring(j - 1,j).equals(".")) // Error Line
        {
            String t = s.substring(j-1,j);

            ret_val = (ret_val + (Integer.parseInt(t)*k));
            k = k * 10;
        }
    }

    return ret_val;
}

您可以看到必须使用参数j-1和j。

调用子字符串

此外,您必须使用等号方法nit与!=比较字符串。

您也可以使用substring

代替chatAt()