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。谁能告诉我如何纠正这个例外?
答案 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个元素。)