Java中的StringIndexOutOfBoundException

时间:2014-03-27 19:51:17

标签: java indexoutofboundsexception

如何在此代码中避免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);
    }

1 个答案:

答案 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++)

(你的意思并不是很清楚“我想在字符串中获取每两个字符”但这至少不会引发异常。)