StringIndexOutOfBoundsException 在我的 AP 计算机科学 A 作业中

StringIndexOutOfBoundsException on my assignment for AP Computer Science A

提问人:apcsa2023student 提问时间:9/17/2023 更新时间:9/17/2023 访问量:40

问:

我正在为我的 AP 计算机科学 A 课程做作业 (java),我必须以相反的顺序组合成按字母交替的字符串。例如,球囊和萎缩输出 ynhopoolrltaab。但是,我不断收到此错误消息。谁能帮忙?这是我的代码:

我正在使用 for 循环,因为这是我现在在课堂上上课的主要思想,但无论我在括号内尝试什么,我仍然会收到相同的错误。

Java for 循环 indexOutofboundsException

评论

0赞 Sören 9/17/2023
请不要上传代码/数据/错误的图片。
0赞 DevilsHnd - 退した 9/17/2023
您已经确定两个单词的长度必须相同......那么,为什么要在循环的初始化部分对这些字长进行求和呢?当超出单词的长度并应用于该方法时,您认为会发生什么?井。。。。现在你知道了。:)forisubstring()

答:

0赞 J Willis 9/17/2023 #1

出现此特定错误的原因是,您将变量 i 设置为两个输入字符串的长度之和,这导致 substring 方法尝试访问超出任一输入字符串长度的索引。

要解决此错误,请将 i 设置为仅等于其中一个输入字符串的长度。

评论

0赞 apcsa2023student 9/18/2023
非常感谢,这对我帮助很大!
-1赞 Reilas 9/17/2023 #2

"...但是,我不断收到此错误消息。谁能帮忙?这是我的代码:

我正在使用 for 循环,因为这是我现在在课堂上上课的主要思想,但无论我在括号内尝试什么,我仍然会收到相同的错误。..."

迭代一个单词的长度。
两个 String 值的 i 值相同。

下面是一个示例。

StringBuilder a, b, s = new StringBuilder();
a = new StringBuilder("atrophy").reverse();
b = new StringBuilder("balloon").reverse();
for (int i = 0, n = a.length(); i < n; i++)
    s.append(a.charAt(i)).append(b.charAt(i));

输出

ynhopoolrltaab

以下是 Java 教程的链接。

评论

1赞 apcsa2023student 9/18/2023
现在这更有意义了,感谢您的教程!