gpt4 book ai didi

java - 循环不返回

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

使用此代码检查字符串“name”并查看字母是否与列表 uNamesList 中的任何字母匹配。找到匹配项后,我希望它返回数组中的匹配项编号。虽然,返回的结果始终是 5。如果未找到匹配项,则默认结果为 5,尽管我确保 EditText“名称”始终具有与 uNamesList 中的字符串相似的字符。

uNamesList.add("bob");
uNamesList.add("mike");
uNamesList.add("sike");
uNamesList.add("othername");
uNamesList.add("name");



public int getName(EditText name) {
int match = 1;
String text = name.getText().toString();
boolean found = false;
for (int i = 0; i < text.length(); i++) { //i = current letter in text
char cLetter = name.toString().charAt(i);
for (int o = 0; o < uNamesList.size(); o++) {
String uName = (String)uNamesList.get(o);
char uLetter = uName.charAt(i);
if (cLetter == uLetter) {
return o;
//match = o;
//found = true;
//break;

}
}
//if(found) break;
}
return match;
}

注释代码只是我试图解决这个问题,因为我认为这是一个循环问题。

最佳答案

name.toString() 不是您希望匹配的字符串,因为 name 是一个 EditText 实例。

改变

char cLetter = name.toString().charAt(i);

char cLetter = text.charAt(i);

即使进行了此修复,您的代码看起来也很奇怪,因为即使输入文本的一个字符与 uName 字符串的相应字符匹配,它也会返回一个匹配项。

你可能应该使用 String::equals :

public int getName(EditText name) {
int match = 1;
String text = name.getText().toString();
for (int o = 0; o < uNamesList.size(); o++) {
String uName = (String)uNamesList.get(o);
if (text.equals(uName)) {
return o;
}
}
return match;
}

关于java - 循环不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28950541/

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