Java 我能';不要限制我的程序只接受二进制数

Java 我能';不要限制我的程序只接受二进制数,java,Java,我正在为我的gui数字转换器创建一个程序。我希望我的程序询问用户一个二进制字符串,如果他没有输入二进制数,程序将向他显示错误消息,并要求他再次输入。问题是,我可以对字母表添加限制,但当涉及到数字时,它就会失败,或者一直显示错误消息 import java.util.*; public class test { Scanner key = new Scanner(System.in); String in; int b; public test(){

我正在为我的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();
    }
}
import java.util.*;
公开课考试{
扫描仪键=新扫描仪(System.in);
串入;
int b;
公开考试(){
做{
System.out.println(“输入由5个数字组成的二进制字符串”);
in=key.nextLine();
int i,j;
char ch;
因为(i=0;i
ch=1
并不像您认为的那样。0和“1”的字符代码是48和49,所以您应该检查它们。此外,您的
=
比较器是反向的,但这并不是编写此代码的最清晰的方式。因为您只比较这两个值,
character.isDigit(ch)
是冗余的

请尝试以下方法之一:

ch == 48 || ch == 49

ch == '0' || ch == '1'
ch=1
的作用与您认为的不同。“0”和“1”的字符代码分别为48和49,因此您应该检查它们。此外,您的
=
比较器是反向的,但这并不是编写此代码的最清晰方式。由于您只比较这两个值,
character.isDigit(ch)
是多余的

请尝试以下方法之一:

ch == 48 || ch == 49

ch == '0' || ch == '1'

1) (i=0;i1)这里的第一个逻辑错误(i=0;i
Scanner
有一个重载的
nextInt
方法,该方法使用基数

int binaryNumber = scanner.nextInt(2);

Scanner
有一个重载的
nextInt
方法,该方法使用基数

int binaryNumber = scanner.nextInt(2);

你可以看一看。@FredLarson我想这会有很大的不同:-)你可以看一看。@FredLarson我想这会有很大的不同:-)也可以是Character.isDigit(ch)和&(ch='0'| ch='1')我想
Character.isDigit(ch)检查是完全多余的。这起作用了,先生!我忘记了单引号。谢谢你也可以是字符。isDigit(ch)和&(ch='0'| | ch='1')我认为
字符。isDigit(ch)
检查是完全多余的。这起作用了,先生!我忘记了单引号。谢谢你只添加了
{
在第2部分中)还是我缺少了什么?if条件仍然不会匹配-“0”!=0您是否只添加了
{}
在第2部分)还是我遗漏了什么?如果条件仍然不匹配-'0'!=0很高兴提到这一点!对于初学者来说,有一点挑战性,但简单明了!我在java中使用基数不是那么高级。仍然是初学者,无论如何,非常感谢您提到这一点!对于初学者来说,有一点挑战性,但简单明了!我很抱歉这不是java中使用基数的高级方法。还是初学者,无论如何,非常感谢