Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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_Java_Exception_Substring - Fatal编程技术网

字符串索引越界异常java

字符串索引越界异常java,java,exception,substring,Java,Exception,Substring,从类中调用函数时出现以下错误: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 虽然我使用了一个系统打印来查看输入,但我在substring()函数中传递了输入,而且一切似乎都是正确的。函数isContained()返回一个布尔值,该值定义作为参数传递的子字符串是否在单词列表中。我的代码是: for(int i=0; i<=size; i++) for(int j=i+1; j<=size; j++)

从类中调用函数时出现以下错误: 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));

for(inti=0;i您正在调用
str.substring(i,j-i)
,意思是
子字符串(beginIndex,endIndex)
,而不是
子字符串(beginIndex,lengthOfNewString)

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

也许你应该改变你的方法,做一些类似于str.substring(i,j)


另外,如果
size
是您的
str的长度,则

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

for(inti=0;i您正在调用
str.substring(i,j-i)
,意思是
子字符串(beginIndex,endIndex)
,而不是
子字符串(beginIndex,lengthOfNewString)

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

也许你应该改变你的方法,做一些类似于str.substring(i,j)


另外,如果
size
是您的
str的长度,则

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

用于(int i=0;i我认为您需要更改循环条件,这是这里的问题。当您执行
时,您需要再循环一次迭代。我认为您需要更改循环条件,这是这里的问题。当您执行
索引自动边界异常时,您正在再循环一次迭代-
如果beginIndex是否定的ive或endIndex大于此字符串对象的长度,或beginIndex大于endIndex


实际上,子字符串函数的右边缘可能低于左边缘。例如,当
i=(size-1)
j=size
时,您将计算
子字符串(size-1,1)
。这是导致错误的原因。

索引自动边界异常
--如果beginIndex为负数,或者endIndex大于此字符串对象的长度,或者beginIndex大于endIndex


实际上,子字符串函数的右边缘可能低于左边缘。例如,当
i=(size-1)
j=size
时,您将计算
子字符串(size-1,1)
。这就是你出错的原因。

我认为问题出在i=0和j=size时。你甚至试过调试它吗?我不认为问题出在那里。错误出现在i=1时。试着调试你的程序。打印输出(我可以读到你已经试过了),所以请使用调试器。如果您使用的是Eclipse IDE,它有一个内置调试器。恐怕我已经做了。我认为问题出在I=0和j=size时。您甚至尝试过调试它吗?我不认为问题出在那里。错误出现在I=1。尝试调试您的程序。输出打印输出(我可以看出您已经尝试过了),所以请使用调试器。如果您使用的是Eclipse IDE,它有一个内置调试器。恐怕我已经猜到您是对的…我认为该方法接受(索引,长度)您是对的…我认为该方法接受(索引,长度)为什么在这里投反对票?为什么在这里投反对票?
for(int i=0; i<=size; i++)
for(int i=0; i<size; i++)