-1
public boolean isThereLetter(String name) {
        char[] chars = name.toCharArray();

        for (char c : chars) {
            if(!Character.isLetter(c)) {
                return false;
            }
        }

        return true;
    }

我这样调用这个函数;

if(isThereLetter("Wdasdsa<>")){
        Log.d(TAG, "there is a letter");
    }else
        Log.d(TAG,"there isn't any letter");

但我注意到,由于 ...("Wdasdsa<>") 函数中的“<”这个字符返回 false。我该如何解决?

4

2 回答 2

2

你的条件倒退了。true如果字符串中的所有字符都是字母,则您当前的实现返回。如果字符串中的任何字符是字母,听起来您想要返回的内容。true

public boolean isThereLetter(String name) {
    char[] chars = name.toCharArray();

    for (char c : chars) {
        if(Character.isLetter(c)) {
            return true;
        }
    }

    return false;
}
于 2013-09-22T04:54:51.173 回答
2

当您遇到至少一个角色时,立即返回真实的说法,即找到了角色。修改代码如图

public boolean isThereLetter(String name) {
    char[] chars = name.toCharArray();

    for (char c : chars) {
        if(Character.isLetter(c)) {
            //You came across atleat one character.
            return true;
        }
    }

    //Never reached into the if block. No any character found
    return false;
}
于 2013-09-22T04:56:44.700 回答