Java 二进制到十进制格式/如何分配正确的输入?

标签 java binary decimal

我正在编写一个java程序来将二进制数转换为十进制数,我已经设法让我的程序在这方面工作。

我的问题是如何让用户必须输入二进制数,否则会弹出错误并且问题将结束? 另外,如何重复我的语句以便用户可以计算多个二进制数转换?

如果您给出答案,您能否解释一下每个步骤的工作原理并展示代码的外观?

我当前的程序是这样的:

public static void main(String[] args) {

    Scanner input = new Scanner( System.in );
    System.out.println("Enter a binary number: ");

    int binarynum =input.nextInt();
    int binary=binarynum;
    int decimal = 0;
    int power = 0;

    while(true){

        if(binary == 0){
            break;

        } else {

            int temp = binary%10;
            decimal += temp*Math.pow(2, power);
            binary = binary/10;
            power++;
        }
    }
    System.out.println("Binary = "+binarynum+" Decimal = "+decimal); ;
}

最佳答案

此版本不断要求用户提供二进制值。

如果不是二进制,则会抛出异常。

最后,要停止该过程,您只需输入 END 作为输入即可。

public static void main(String[] args) {
    while (true) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a binary number (END to exit): ");
        try {
            String inputValue = input.next();
            if (inputValue.equals("END")) {
                break;
            }
            if (!inputValue.matches("[01]+")) {
                throw new Exception("Invalid binary input");
            }

            int binarynum = Integer.valueOf(inputValue);
            int decimal = getDecimalValue(binarynum);
            System.out.println("Binary = " + binarynum + " Decimal = " + decimal);
            System.out.println();
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

public static int getDecimalValue(int binary) {
    int decimal = 0;
    int power = 0;

    while (true) {
        if (binary == 0) {
            break;
        } else {
            int temp = binary % 10;
            decimal += temp * Math.pow(2, power);
            binary = binary / 10;
            power++;
        }
    }
    return decimal;
}

关于Java 二进制到十进制格式/如何分配正确的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49441077/

相关文章:

java - Apache Camel 获取交换路径

Bash将十进制乘以int

Java swing BoxLayout 中心不起作用

java - 代理多次调用同时执行相同的代码

java - 继承是指继承可访问的方法还是继承所有成员但有些成员在子类中不能访问?

c++ - 从二进制文件中读取 16 位整数 C++

go - 为什么 byte cast 炸毁不一致的 golang?

python - 将二进制 64 位时间戳偏移量从 GPS 纪元转换为 python 日期时间对象

entity-framework - 在 EntityFramework Decimal 属性上设置 IsModified

excel - 在Excel中使用宏更改小数分隔符?