-1

所以我遇到了一个似乎没有任何意义的错误,而解决方案很可能是盯着我的脸。我确实理解“字符串索引超出范围:XX”,但即使我多次输入相同的字符串,它似乎也会改变该值。它说(未知来源)我认为是短语变量?而且我确实看到错误发生在第 85 行,该行打印了该短语。然而,在我这个稍微新手的眼里,一切看起来都很好。有什么智慧可以发泄吗?

资源:

代码

图片链接

4

4 回答 4

2

而不是i <= phrase.length()你应该使用i < phrase.length()

于 2013-03-19T20:58:51.593 回答
0

问题在于在phrase.substring(i,i+1)最后一次迭代中它会超出范围。

于 2013-03-19T21:05:24.200 回答
0

问题是

for (i = 0; i <= phrase.length(); i++); {

应该

for (i = 0; i <= phrase.length(); i++) {

(去掉最后的分号)

解释:

您的代码重新格式化:

for (i = 0; i <= phrase.length(); i++)
  ;

{
  pause();
  System.out.print(...)
}

只有;在 for 循环中。这{ ... }是一个单独的语句(即不是 for 循环的一部分)。

将变量声明放在循环内一般会防止这种情况在以后发生:(因为i循环外的引用会产生错误)

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

还:

它可能也应该<<=

for (i = 0; i < phrase.length(); i++) {
于 2013-03-19T21:03:38.553 回答
0

在第 83 行,我应该是 <phrase.length() 而不是 <= 。

固定循环:

for (i = 0; i < phrase.length(); i++) {
于 2013-03-19T21:00:31.130 回答