所以程序应该将二进制数转换为十进制数,首先检查它是否是二进制数,然后进行转换。无论我给出什么输入,它总是说输入不是二进制数,我不明白为什么。这是我的代码。
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;
}
}
最佳答案
您只需将 if (x != '0' && x != '1')
编辑为 if (x != '0' || x != '1 ')
关于java - 为什么我的程序总是返回不是二进制数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527146/