使用此代码检查字符串“name”并查看字母是否匹配,以及列表uNamesList的任何字母。一旦找到匹配项,我希望它返回数组中的匹配号。虽然,返回的结果总是相同的是5.如果没有找到匹配,则默认结果为5. 5虽然我确保EditText“name”总是与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;
}
注释代码只是我试图解决这个问题,因为我认为这是一个循环问题。
答案 0 :(得分:1)
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;
}
答案 1 :(得分:1)
如果您正在查看EditText中的字符串&#39; name&#39;在列表中并返回它的位置,也许你只需要:
uNamesList.indexOf(name.getText().toString());