Java中的StringIndexOutOfBoundException
如何在此代码中避免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
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是独占的。