0

Java で文字を比較する際に問題が発生しています。有効な 2 進数を見つけようとしているので、2 進数を含む文字列を関数に渡し、それらが 0 または 1 であることを確認しています。ループして文字列内の各文字をチェックしますが、(適切な 2 進数を指定したことを知っていても) 関数が悪いと言っています。

関数は次のとおりです。

public boolean isValidBinary(String s) {
    //First we get the string length
    int strLen = s.length();
    //Now we loop through each character of the string
    for(int x = 0; x < strLen; x++) {
        //Assign the character to a variable each loopthrough
        char c = s.charAt(x);
        //Check if it's either a 0 or a 1
        if(c != '0' || c != '1') {
            return false;
        }
    }
    //This is reached when all char's have been evaluated as 0 or 1
    return true;
}

私はかなり長い間この問題を見つめてきましたが、それを理解することができませんでした.

4

2 に答える 2

3

それは論理エラーです。&&の代わりに意味しました||

とにかく、これには正規表現を使用できます。

// must contain at least one digit, and only 0 or 1
public boolean isValidBinary(String s)
{
    return s.matches("^[01]+$");
}
于 2012-09-05T02:39:29.973 に答える
1

内部条件のロジックを再考してください: if(c != '0' || c != '1'). ここで AND を使用します: if ((c != '0') && (c != '1'))。つまり、両方の条件が true の場合、入力は無効であると見なされます。つまり、入力が0ではなく、 1でもcない場合は無効な文字です。

コードが文字をチェックしている場合を考えてみましょう1: それはテストの左側から始まります: c != 0. これはtrueであり、OR が短絡しているため、条件全体の結果はであり、テストされている現在の文字 が入力を無効にするべきではありませんtrueが、関数は を返します。false1

于 2012-09-05T02:40:40.973 に答える