gpt4 book ai didi

java.lang.StringIndexOutOfBoundsException : String index out of range: 3 异常

转载 作者:行者123 更新时间:2023-11-30 08:44:16 25 4
gpt4 key购买 nike

我正在制作一个程序来确定两个词是否是彼此的变位词。但是,我有以下错误,我不完全确定原因:

java.lang.StringIndexOutOfBoundsException: String index out of range: 4

我只包括了这个方法而不是整个程序,因为据推测这是发生错误的方法。

public StringBuffer differentCharacters() 
{
StringBuffer difference = new StringBuffer();
for (int i=0; i<StringBuffer1.length(); i++)
{
if(StringBuffer1.charAt(i) != StringBuffer2.charAt(i))
{
difference.append(StringBuffer1.charAt(i));
}
}
return difference;
}

最佳答案

您将收到 StringIndexOutOfBoundsException,因为您正在使用非法索引调用 StringBuffer2。原因如下:

您一般有 3 个 StringBuffer:differenceStringBuffer1StringBuffer2

解释:

StringBuffer difference= new StringBuffer();

这是您创建“结果”StringBuffer 的地方。现在让我们想象一下:

  1. StringBuffer1length为5
  2. StringBuffer2length为3

执行:

for (int i = 0; i < StringBuffer1.length(); i++)

在此循环中,您将根据 StringBuffer1 的长度 (5) 进行迭代。所以这是发生了什么:

我 = 0

if(StringBuffer1.charAt(0) != StringBuffer2.charAt(0))

我 = 1

if(StringBuffer1.charAt(1) != StringBuffer2.charAt(1))

我 = 2

if(StringBuffer1.charAt(2) != StringBuffer2.charAt(2))

我 = 3

if(StringBuffer1.charAt(3) != StringBuffer2.charAt(3))

坚持住!还记得 StringBuffer2 的长度等于 3 吗?这意味着以下内容:

StringBuffer2.charAt(3) // 0 based index : 0-1-2-3 crash !!

是非法的。因此抛出 StringIndexOutOfBoundsException,执行失败。

关于java.lang.StringIndexOutOfBoundsException : String index out of range: 3 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33862022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com