ArrayIndexOutOfBoundsException即将到来

时间:2013-11-26 08:57:52

标签: java

public float getAccountBalance()    {       //log.debug("in getAccountBalance");
    PostMethod method = new PostMethod(smsServiceUrl);
    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
    method.setParameter("Username", username);
    method.setParameter("PIN", PIN);
    method.setParameter("AvailableCredit", "");
    String result = new String();
    try {
        result = doHttpServiceRequest(method);
    //  log.debug("result is: " + result);
    } catch (Exception e) {
    //  log.warn(e.toString());
    }

    String[] retArray = result.split(" ");
    return Float.valueOf(retArray[1]);

}

这里我得到ArrayIndexOutBoundException。谁能告诉我如何纠正这个例外?

4 个答案:

答案 0 :(得分:1)

你可能在这里得到例外:

String[] retArray = result.split(" ");
return Float.valueOf(retArray[1]);

如果您根据" "进行拆分,有时可能没有第二个元素。你需要检查:

String[] retArray = result.split(" ");
if(retArray.length >= 2) {
   return Float.valueOf(retArray[1]);
}

请注意,我只是为了证明问题而编写条件。您可能想重新考虑您的逻辑。 还记得Java中的数组是从零开始,当你返回retArray[1]时,你实际上是在返回数组中的第二个元素。

答案 1 :(得分:0)

String[] retArray = result.split(" ");
return Float.valueOf(retArray[1]);

将假设retArray中至少有两个元素 - 可能不是这种情况 使用retArray.length

进行测试

答案 2 :(得分:0)

我认为你必须首先检查,如果数组有任何数据

if(retArray.length>0)
{
  // do your thing
}
else
{
   // no element found
}

答案 3 :(得分:0)

检查字符串结果,要么它是空的,要么它将包含没有空格分隔符的数据,还要在访问retArray [1]之前检查retArray的长度(通过retArray [1]实际上你试图访问数组中的2个元素。)

相关问题