比较Java中的字符

时间:2012-09-05 02:35:34

标签: java comparison character

我在比较Java中的角色时遇到了问题。我正在尝试找到一个有效的二进制数,所以我将带有二进制数字的字符串传递给一个函数,并确保它们是0或1。我循环检查字符串中的每个字符,但是,我的函数告诉我它很糟糕(即使我知道我给它一个正确的二进制数字)。

这是功能:

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;
}

我已经盯着这个问题很长一段时间了,并且无法弄明白,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:3)

这是一个逻辑错误。您的意思是&&而不是||

无论如何,你可以使用正则表达式:

// must contain at least one digit, and only 0 or 1
public boolean isValidBinary(String s)
{
    return s.matches("^[01]+$");
}

答案 1 :(得分:1)

重新思考内在条件中的逻辑:if(c != '0' || c != '1')。您想在此处使用AND:if ((c != '0') && (c != '1'))。这意味着如果两者条件为真,那么输入应被视为无效,即如果不是0 ,则c是无效字符,并且不是1

考虑您的代码正在检查1字符的情况:它从测试的左侧开始:c != 0。这是true,由于OR短路,整个条件的结果为true,并且您的函数返回false,即使正在测试的当前字符,{{1 },不应使输入无效。