Java 为什么我的程序总是不返回二进制数?

Java 为什么我的程序总是不返回二进制数?,java,Java,因此,程序应该将二进制数转换为十进制数,首先检查它是否是二进制数,然后再转换。不管我输入什么,它总是说输入不是二进制数,我也不知道为什么。这是我的密码 public class Conversion { public static void main (String []args){ String binaryNumber = args[0]; if (checkBinary(binaryNumber)){ int decimalN

因此,程序应该将二进制数转换为十进制数,首先检查它是否是二进制数,然后再转换。不管我输入什么,它总是说输入不是二进制数,我也不知道为什么。这是我的密码

public class Conversion {
    public static void main (String []args){
        String binaryNumber = args[0];
        if (checkBinary(binaryNumber)){
            int decimalNumber = binaryToDecimal(binaryNumber);
            System.out.print("The binary number " + binaryNumber + "is " + decimalNumber + "in base 10." );
        }
        else {
            System.out.println("The input is not binary!");
        }
    }

    public static boolean checkBinary(String binaryNumber){
        for (int i=0; i < binaryNumber.length(); i++) {
            char x = binaryNumber.charAt(i);
            if (x != '0' && x != '1'){
                return false;
            }
        }
        return true;
    }

    public static int binaryToDecimal(String binaryNumber) {
        int z = 1;
        int y = 0;
        for (int i = binaryNumber.length()- 1; i >= 0; i--){
            if (binaryNumber.charAt(i)=='1'){
                y += z;
            }
            z *= 2;
        }
        return y;
    }
}
公共类转换{
公共静态void main(字符串[]args){
字符串binaryNumber=args[0];
if(检查二进制(二进制数)){
整数小数=二进制到十进制(二进制数);
System.out.print(“二进制数“+二进制数+”是以10为基数的“+小数+”);
}
否则{
System.out.println(“输入不是二进制的!”);
}
}
公共静态布尔checkBinary(字符串二进制数){
对于(int i=0;i=0;i--){
if(二进制数.charAt(i)='1'){
y+=z;
}
z*=2;
}
返回y;
}
}

您的类具有此输出,这是正确运行的方式 线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:0 at Conversion.main(Conversion.java:10) 为了避免此类问题,最好使用Scanne,因此我只需更换:

`String binaryNumber = args[0]; ` `字符串binaryNumber=args[0]` 为了

` 扫描仪输入=新扫描仪(System.in); System.out.println(“输入二进制:”); 字符串binaryNumber=input.next();` 整个代码如下,运行良好(Java 8):

导入java.util.Scanner; 公共类转换{ 公共静态void main(字符串args[]){ //替换:字符串binaryNumber=args[0]; 扫描仪输入=新扫描仪(System.in); System.out.println(“输入二进制:”); 字符串binaryNumber=input.next(); if(检查二进制(二进制数)){ 整数小数=二进制到十进制(二进制数); System.out.print(“二进制数“+二进制数+”是以10为基数的“+小数+”); } 否则{ System.out.println(“输入不是二进制的!”); } input.close(); } 公共静态布尔checkBinary(字符串二进制数){ 对于(int i=0;i=0;i--){ if(二进制数.charAt(i)='1'){ y+=z; } z*=2; } 返回y; } } 输出: 输入二进制: 01000100111
二进制数01000100111是以10为基数的551。

你只需要编辑
if(x!=“0”和&x!=“1”)
if(x!=“0”| x!=“1”)

奇怪的是,发布的程序适合我。您可能需要稍微格式化输出。但是我得到了正确的答案:二进制数1015是以10为基数的;这是我在这台机器上唯一的一个。这与您的问题没有直接关系,但为什么不使用
Integer.parseInt(String,int)
,其中第二个参数是基数(比如
2
)。您可以将输入字符串添加到错误消息“输入不是二进制文件”中,以验证args[0]您输入的内容。 ` Scanner input = new Scanner(System.in); System.out.println("Enter Binary: "); String binaryNumber = input.next();` import java.util.Scanner; public class Conversion { public static void main (String args[]){ // replace :String binaryNumber = args[0]; Scanner input = new Scanner(System.in); System.out.println("Enter Binary: "); String binaryNumber = input.next(); if (checkBinary(binaryNumber)){ int decimalNumber = binaryToDecimal(binaryNumber); System.out.print("The binary number " + binaryNumber + " is " + decimalNumber + " in base 10." ); } else { System.out.println("The input is not binary!"); } input.close(); } public static boolean checkBinary(String binaryNumber){ for (int i=0; i = 0; i--){ if (binaryNumber.charAt(i)=='1'){ y += z; } z *= 2; } return y; } }