gpt4 book ai didi

java - 防止 for 循环继续超出 string1 或 string2 的长度

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

在下面的代码中,我在比较字符串的相似性时不断收到以下错误。

String index out of range: 1 (where 1 is the input length)

似乎是如果输入小于答案的长度,就会导致这个错误。但是,每当我尝试添加 if 语句以在我增加的长度高于输入长度时从循环中跳出,它仍然会抛出此错误。

String answer = textArea.getText().toLowerCase();
for (int i = 0; i < finalWord.length(); i++)
{
if (i > answer.length())
break;
else if (finalWord.contains(answer.charAt(i) + ""))
{
likeness += 1;
}
}

最佳答案

如果循环应该继续,只需在 for comparisan 中添加您的比较。只有当它小于最终单词并且小于并回答时,循环才应该继续。如果其中任何一个为假,则循环不应继续。

这是通过 && AND 运算符实现的。等式的两边都需要为真,循环才能继续。

这是您希望 for 循环进行的比较

if(i < finalWord.length() && i < answer.length() ) {
i++
}

在你的代码中它看起来像这样:

String answer = textArea.getText().toLowerCase();
for (int i = 0; i < finalWord.length() && i < answer.length() ; i++) {
if (finalWord.contains(answer.charAt(i) + "")) {
likeness += 1;
}
}

只是为了好玩,一个稍微优化的版本,通过将字符串长度存储在局部变量中,您可以节省长度检查函数调用的开销。

String answer = textArea.getText().toLowerCase();
for (int i = 0,
fwl=finalWord.length(),
al=answer.length();
i < fwl && i < al ;
i++) {
if (finalWord.contains(answer.charAt(i) + "")) {
likeness += 1;
}
}

http://ideone.com/7zHoV4

关于java - 防止 for 循环继续超出 string1 或 string2 的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37188996/

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