所以我遇到了一个似乎没有任何意义的错误,而解决方案很可能是盯着我的脸。我确实理解“字符串索引超出范围:XX”,但即使我多次输入相同的字符串,它似乎也会改变该值。它说(未知来源)我认为是短语变量?而且我确实看到错误发生在第 85 行,该行打印了该短语。然而,在我这个稍微新手的眼里,一切看起来都很好。有什么智慧可以发泄吗?
资源:
图片链接。
而不是i <= phrase.length()
你应该使用i < phrase.length()
问题在于在phrase.substring(i,i+1)
最后一次迭代中它会超出范围。
问题是
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++) {
在第 83 行,我应该是 <phrase.length() 而不是 <= 。
固定循环:
for (i = 0; i < phrase.length(); i++) {