有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用数组将二进制转换为十进制

我想把二进制字符串变成十进制。如果输入-1,它将终止。我一直在使用数组。建议使用:public static int binaryToDecimal(String binaryString)。但我不知道该怎么做。这就是我所拥有的:

import java.util.Scanner;

public class BinaryConversion {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        String inString;
        int decimal;

        System.out.println("Enter a binary number: ");
        inString = input.nextLine();

        while (inString != "-1") {
            int i;
            int binaryLength;

            binaryLength = inString.length();

            for (i = 0, decimal = 0; i < binaryLength; i++) {
                decimal = decimal * 2 + (inString[i] - 0);
                System.out.print(decimal);

            } 
            System.out.println("Enter a binary number: ");
            inString = input.nextLine();
        }
        System.out.println("All set !");
    }
}

它说数组存在编译问题。谢谢!


共 (2) 个答案

  1. # 1 楼答案

    您可以使用Integer.parseInt()简化代码:

    public static void main(String[] args) {
        final Scanner input = new Scanner(System.in);
    
        String inString;
    
        while (true) {
            System.out.println("Enter a binary number: ");
            inString = input.nextLine();
    
            if (inString.equals("-1"))
                break;
    
            System.out.println(Integer.parseInt(inString, 2));
        }
        System.out.println("All set !");
    }
    
  2. # 2 楼答案

    inString是字符串,而不是数组。所以,你不能使用inString[i]。要获取字符串中给定位置的字符,请使用inString。charAt(i),返回一个char

    然后,还必须将该字符转换为int。 你可以用性格来做到这一点。getNumericValue(字符)

    总之,不是

    inString[i]
    

    你需要使用

    Character.getNumericValue(inString.charAt(i))