Java 如何确保用户只输入1和0?

Java 如何确保用户只输入1和0?,java,input,binary,Java,Input,Binary,我有一个循环,它让用户一直在输入值,直到他/她输入了有效的东西,在这种情况下,它必须是二进制数,必须是某种类型变量的大小。尽管如此,我不知道如何在用户输入除1和0之外的其他数字的情况下使循环继续 我想使用string.contains(),但这不能解释所有的数字。这是我的循环: while((double)inputStr.length() != table.getNumberOfVariables() || inputStr.replaceAll("\

我有一个循环,它让用户一直在输入值,直到他/她输入了有效的东西,在这种情况下,它必须是二进制数,必须是某种类型变量的大小。尽管如此,我不知道如何在用户输入除1和0之外的其他数字的情况下使循环继续

我想使用
string.contains()
,但这不能解释所有的数字。这是我的循环:

while((double)inputStr.length() != table.getNumberOfVariables() || 
                    inputStr.replaceAll("\\D","").length() != inputStr.length() ||
                    Double.parseDouble(inputStr) > 1){

这一行:
Double.parseDouble(inputStr)>1
应该完成这一点,但我处理的是十进制数,因此如果输入是10或100,它们将被视为无效

在您的情况下,不要在正则表达式中使用
\D
(任何不是数字的东西),您必须更具体:
[^01]
(意思是:任何不是零或一的东西)

但是,它不会因为优秀的代码而为您赢得奖项,因为阅读此代码的读者很难了解您在做什么。最好将您正在做的事情转化为一个名称清晰的方法,如:

public static boolean containsOnly(String s, String only) {
    for (int i = 0; i < s.length(); i++) {
        if (only.indexOf(s.charAt(i)) == -1)
            return false;
    }
    return true;
}
仅包含公共静态布尔值(字符串s,仅限字符串){
对于(int i=0;i

碰巧,Apache commons-lang3库中有这样一个方法:
StringUtils.containsOnly
。它们有许多字符串操作方法,比使用正则表达式更清晰、速度更快。

您可以使用正则表达式验证二进制字符串:

    String s = "0101110";
    if (s.matches("[01]++")) {
        System.out.println("ok");
    } else {
        System.out.println("invalid");
    }

这似乎已经做到了,谢谢。它还缩短了代码,不需要再担心最后一行。我会改变这一点,它会让事情变得更清楚。是的,我相信这也会起作用。我认为所有格量词在这里是合适的。
    String s = "0101110";
    if (s.matches("[01]++")) {
        System.out.println("ok");
    } else {
        System.out.println("invalid");
    }