使用此代码检查字符串“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/