以下代码用于将字符串转换为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。
请帮我解决这个问题......
答案 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()