字符串索引超出范围异常Java

从类中调用函数时出现以下错误:java.lang.StringIndexOutOfBoundsException:超出范围的字符串索引:-1尽管我使用系统打印来查看输入的内容,但仍在substring()函数中进行传递似乎是正确的。函数isContained()返回一个布尔值,该值定义作为参数传递的子字符串是否在单词列表中。我的代码是:

for(int i=0; i<=size; i++)

for(int j=i+1; j<=size; j++)

if(isContained(str.substring(i,j-i)))

System.out.println(str.substring(i,j-i));

其中size是我在函数中传递的字符串(str)的大小

回答:

您在打电话str.substring(i, j-i),意味着substring(beginIndex,

endIndex)不是substring(beginIndex, lengthOfNewString)

此方法的一个假设endIndex是大于或等于beginIndex,如果不是,则新索引的长度将为负,并且其值将被抛出StringIndexOutOfBoundsException

也许您应该更改自己的方法,例如str.substring(i, j)


此外,如果size是你的长度str,然后

for (int i = 0; i <= size; i++)

应该是

for (int i = 0; i < size; i++)

以上是 字符串索引超出范围异常Java 的全部内容, 来源链接: utcz.com/qa/431705.html

回到顶部