0

我有一个输入,用户必须引入一个二进制 16 位序列......所以我编写了这段代码来验证字符串bits,我希望在验证真正的二进制序列后得到 1。

但是它真的不起作用。我已经尝试通过比较if (c != '1' || c!='0')并没有得到结果。

if ( bits.length() != 16 ) return 0;
    char[] toCharArray = bits.toCharArray();

    for (char c : toCharArray) {
        if ( ( Character.getNumericValue(c) != 1 ) || ( Character.getNumericValue(c) != 0 ) ) {
            return -1;
        }
    }

    return 1;
4

3 回答 3

4

你的逻辑不正确。如果值不等于且不等于1 则需要出错0。使用&&而不是||.

于 2013-04-19T22:36:07.850 回答
3

这是一个单行:

return bits.matches("[01]{16}") ? 1 : 0;

boolean使用for代替trueand会更好。false10

这就是你需要的:

return bits.matches("[01]{16}");
于 2013-04-19T22:40:06.973 回答
2

你的“如果”总是返回真,就像说“如果不是 5 点钟或不是 6 点钟,做点什么”

它总是不是其中之一

于 2013-04-19T22:43:20.033 回答