gpt4 book ai didi

java - while 循环中的 StringIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-12-01 17:30:14 26 4
gpt4 key购买 nike

我有这个代码:

String input = JOptionPane.showInputDialog("Enter text");
StringBuilder forward = new StringBuilder("");
StringBuilder backward = new StringBuilder("");
int f = 0;
int b = input.length();


while(f < input.length()) {

while(input.charAt(f) > 63) {

forward.append(input.charAt(f));
f++;

}

f++;
}

System.out.println(forward);

虽然程序还没有完成,但这里已经抛出异常了。它说:

线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:5(范围取决于我输入的字符数) 在 java.lang.String.charAt(来源未知)

奇怪的是,我昨天编写了类似的代码,它运行得很好,而且很实用。

我已经搜索了堆栈论坛和 Oracle 文档,但我只发现当索引等于字符串大小(对于 charAt 方法)时抛出此异常。

所以这似乎仍然是问题所在,但我找不到它。

while(input.charAt(f) > 63)

编辑:

为什么该代码不起作用?再次抛出与上面相同的异常?

while(b > 0) {

if(input.charAt(b) > 63) {

backward.append(input.charAt(b));

}

b--;
}

最佳答案

f的值可以超过这里字符串的长度:

while (input.charAt(f) > 63) {
forward.append(input.charAt(f));

// This next line might increase f past the end of the string.
f++;
}

试试这个:

while (f < input.length()) {

char c = input.charAt(f);
if (c > 63) {
forward.append(c);
}

f++;
}

第二个版本始终检查 f < input.length()在尝试访问 input.charAt(f) 之前.

关于java - while 循环中的 StringIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11808856/

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