我不能限制我的程序只接受二进制数

Has*_*Zia 1 java

我正在为我的gui数字转换器创建一个程序.我希望我的程序向用户询问二进制字符串,如果他没有输入二进制数字,程序将显示错误消息并要求他再次输入.问题是我可以对字母表添加限制,但是当涉及到数字时,它会失败或者它会一直显示错误消息.

import java.util.*;

public class test {
    Scanner key = new Scanner(System.in);
    String in;
    int b;
    public test(){
        do{
            System.out.println("Enter the binary string of 5 numbers");
            in = key.nextLine();
            int i,j;
            char ch;
            for (i=0 ; i<=5 ; i++){
                b = 0;
                ch = in.charAt(i);
                j = ch;
                if (Character.isDigit(ch) && ch<=0 && ch>=1)
                    b = 1;
                else
                    System.out.println("Please enter a binary number (1 , 0)");
                break;
                //b = 1;
            }
        }while(b != 1);

        int c;
        c = Integer.parseInt(in);
        System.out.println("your number is: " + c );
    }

    public static void main (String args[]){
        test obj = new test();
    }
}
Run Code Online (Sandbox Code Playgroud)

And*_*old 7

ch<=0 && ch>=1不会做你认为它做的事情."0"和"1"的字符代码分别为48和49,因此您应该检查这些代码.此外,您的>=比较器是向后的,但这并不是编写此代码的最清晰的方法.既然你只是在比较那两个值,那就Character.isDigit(ch)多余了.

尝试以下方法之一:

ch == 48 || ch == 49

ch == '0' || ch == '1'
Run Code Online (Sandbox Code Playgroud)

  • 我认为`Character.isDigit(ch)`检查完全是多余的. (4认同)