如何在此代码中避免StringIndexOutOfBoundException?我想在字符串中获取每两个字符。
String path = input.nextLine();
for(int i = 0; i < path.length(); i++ )
{
String n = path.substring(i,i+1);
String nPlus1 = path.substring(i+1, i+2);
}
答案 0 :(得分:4)
在最后一次迭代中,i
将等于path.length() - 1
。因此在本声明中:
String nPlus1 = path.substring(i+1, i+2);
...第一个参数将等于path.length()
,第二个参数将等于path.length() + 1
。第一个参数是有效的;第二个不是。根据{{3}}:
IndexOutOfBoundsException - 如果beginIndex为负数,或endIndex大于此String对象的长度,或者beginIndex大于endIndex。
要解决此问题,只需调整循环边界:
for(int i = 0; i < path.length() - 1; i++)
(你的意思并不是很清楚“我想在字符串中获取每两个字符”但这至少不会引发异常。)