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;
}
}