java - 在 Java 中将二进制转换为十进制

标签 java

我需要编写一个可以将位转换为十进制的程序。每当我输入一点时,它只输出 0.0.0。我不知道为什么。我知道这非常简单,但我只是没有看到它。任何帮助将不胜感激。

import java.lang.Math;
import java.util.Scanner;


public class Lab1 {
    static double number = 0;

    public static double toDec(String num) {

        char[] charArray = num.toCharArray();

        for(int i = 0; i<charArray.length;i++) {
            if(charArray[i] == 1) {
                number = Math.pow(2, charArray.length-i);
            }
        }

        return number;


    }


    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int bit;
        String bitString;

        System.out.println("Please enter a bit");
        bit = keyboard.nextInt();
        bitString = Integer.toString(bit);


        System.out.println(toDec(bitString));



    }

}

最佳答案

您已经将 charArray[i]1 进行了比较,但您是在将苹果与橙子进行比较,具体来说,是 charint

改为与 char '1' 进行比较。

if(charArray[i] == '1') {

此外,您可以在toDec 中将number 设为局部变量;它不需要存在于该方法之外。

此外,这仅在设置了一位时才有效。现在你只使用一位,但如果你想修改它以使用多位,则需要进行另一项更改。

每次调用 toDec 并且条件为 true 时,您都会覆盖 number。您可能希望使用 += 添加到 number 而不是使用 = 覆盖之前的值。

关于java - 在 Java 中将二进制转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643958/

相关文章:

java - 如何更改 JTable 中第一个单元格的背景颜色?

java - 为什么 getCurrentInterruptionFilter BroadcastReceiver 在快速设置中起作用,但在设置中不起作用?

java - 如何检测docker容器是否崩溃

java - @Basic(fetch = FetchType.LAZY) 不起作用?

java - 现在有什么新方法可以在 Java 中以微秒为单位准确获取当前时间?

java - 如何使用 JDBC 访问 Oracle 表统计信息,特别是 NUM_ROWS 和 AVG_ROW_LEN?

Java 媒体框架和 Windows 8.1

java - Spring AOP错误: java. lang.NoClassDefFoundError:org/springframework/cglib/core/SpringNamingPolicy

java - 如何将 Android 应用程序连接到 RoR 数据库

java - Firebase 数据库中的 setValue() 方法不起作用。值没有添加到数据库中