Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的StringIndexOutOfBoundException_Java_Indexoutofboundsexception - Fatal编程技术网

Java中的StringIndexOutOfBoundException

Java中的StringIndexOutOfBoundException,java,indexoutofboundsexception,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); } String pat

如何在此代码中避免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);
    }
String path=input.nextLine();
对于(int i=0;i
在最后一次迭代中,
i
将等于
path.length()-1
。因此,在本声明中:

String nPlus1 = path.substring(i+1, i+2);
。。。第一个参数将等于
path.length()
,第二个参数将等于
path.length()+1
。第一个论点是有效的;第二个不是。根据:

IndexOutOfBoundsException-如果beginIndex为负值,或endIndex大于此字符串对象的长度,或beginIndex大于endIndex

要解决此问题,只需调整循环边界:

for(int i = 0; i < path.length() - 1; i++)
for(int i=0;i

(你所说的“我想得到字符串中的每两个字符”是什么意思还不太清楚,但这至少不会引发异常。)

也许
I
需要更改为其他字符。@Zouzu:我希望它能给出最后一个字符。第二个参数可以是
path.length()
。问题出在循环体的第二行。@JonSkeet-Oops。是的,endIndex是独占的。