检查整数以查看它是否包含零

Bob*_*y S 11 java parsing integer

给定一个整数,如何使用Java检查它是否包含0?

1 = Good
2 = Good
...
9 = Good
10 = BAD!
101 = BAD!
1026 = BAD!
1111 = Good

如何才能做到这一点?

Jon*_*eet 38

你的意思是如果十进制表示包含0?绝对最简单的方法是:

if (String.valueOf(x).contains("0"))
Run Code Online (Sandbox Code Playgroud)

不要忘记一个数字本身并不"含有0"(当然除了零) - 它取决于基数.因此十进制中的"10"是十六进制中的"A",十六进制中的"10"是十进制中的"16"......在这两种情况下结果都会改变.

可能有更有效的方法来测试整数的十进制表示中是否存在零,但它们可能比上面的表达式更多地涉及.

  • +1 - 我会在生产代码中使用这个解决方案,直到有人向我证明a)这是一个瓶颈,而b)另一个解决方案明显更快.简单性和可读性有很多要说的. (5认同)

Bil*_*ard 22

如果由于某种原因您不喜欢转换为String的解决方案,您可以尝试:

boolean containsZero(int num) {
    if(num == 0)
        return true;

    if(num < 0)
        num = -num;

    while(num > 0) {
        if(num % 10 == 0)
            return true;
        num /= 10;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这也假设num是基数10.

编辑:添加条件来处理负数和0本身.