-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

少なくとも 1 つの文字に出くわすと、文字が見つかったと言ってすぐに true を返します。示されているようにコードを変更します

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 に答える