java - 循环不返回

标签 java android

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

相关文章:

android - android 上的 Apache cordova 滚动条在哪里?

java - 用不同的图像填充二维 JButton 数组

java - 使用 Scanner : mismatch exception 解析逗号分隔值

java - RxJava 中 REAL 背压的最佳实现

android - 不建议使用Google Plus API。我如何从requestScopes(Scope(Scopes.PROFILE))获取性别和出生日期

Android LocationListener 没有命中 onLocationChanged

java - ObservableList 中的粗体文本会破坏 ChangeListener

Java:打印调用控制台的每个方法?

android - 接收消息收到来自 GCM 服务的确认

android - 我应该混淆 Android 应用程序存储的 OAuth 消费者 secret 吗?