Java二进制转换十进制

引言

在计算机科学领域中,二进制和十进制是两种常见的数制。其中,二进制是由0和1两个数字组成的数制,而十进制是由0到9这十个数字组成的数制。在开发过程中,经常会遇到将二进制数转换为十进制数的需求。本文将介绍如何使用Java实现二进制到十进制的转换。

流程概述

下面的表格展示了将二进制转换为十进制的步骤和对应的代码实现。

步骤 描述 代码
1 获取输入的二进制数
2 验证输入是否为合法的二进制数
3 计算二进制数的权重
4 将二进制数转换为十进制数
5 返回转换后的十进制数

接下来,我们将逐个步骤进行详细说明,并给出对应的代码实现。

代码实现

步骤一:获取输入的二进制数

首先,我们需要获取用户输入的二进制数。可以使用Java的Scanner类来获取用户的输入。下面是代码实现:

import java.util.Scanner;

public class BinaryToDecimalConverter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a binary number: ");
        String binary = scanner.nextLine();
        scanner.close();
    }
}

步骤二:验证输入是否为合法的二进制数

接下来,我们需要验证用户输入的字符串是否为合法的二进制数。合法的二进制数只能由0和1组成,并且长度大于0。可以使用正则表达式来进行验证。下面是代码实现:

import java.util.Scanner;

public class BinaryToDecimalConverter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a binary number: ");
        String binary = scanner.nextLine();
        scanner.close();

        if (!binary.matches("[01]+")) {
            System.out.println("Invalid binary number!");
            return;
        }
    }
}

步骤三:计算二进制数的权重

在将二进制数转换为十进制数之前,我们需要计算每一位二进制数的权重。权重是指每一位在十进制数中的位置,从右往左依次递增。例如,二进制数1010的权重为8 4 2 1。下面是代码实现:

import java.util.Scanner;

public class BinaryToDecimalConverter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a binary number: ");
        String binary = scanner.nextLine();
        scanner.close();

        if (!binary.matches("[01]+")) {
            System.out.println("Invalid binary number!");
            return;
        }

        int length = binary.length();
        int[] weights = new int[length];
        for (int i = 0; i < length; i++) {
            weights[i] = (int) Math.pow(2, length - i - 1);
        }
    }
}

步骤四:将二进制数转换为十进制数

现在,我们可以根据二进制数的权重将其转换为十进制数了。我们可以使用循环遍历每一位二进制数,并将其与对应的权重相乘,然后累加得到十进制数。下面是代码实现:

import java.util.Scanner;

public class BinaryToDecimalConverter {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a binary number: ");
        String binary = scanner.nextLine();
        scanner.close();

        if (!binary.matches("[01]+")) {
            System.out.println("Invalid binary number!");
            return;
        }

        int length = binary.length();
        int[] weights = new int[length];
        for (int i = 0; i < length; i++) {
            weights[i] = (int) Math.pow(2, length - i - 1);
        }

        int decimal = 0;
        for (int i = 0; i < length; i++) {
            if (binary.charAt(i) ==