我需要编写一个可以将位转换为十进制的程序。每当我输入一点时,它只输出 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
进行了比较,但您是在将苹果与橙子进行比较,具体来说,是 char
与 int
。
改为与 char '1'
进行比较。
if(charArray[i] == '1') {
此外,您可以在toDec
中将number
设为局部变量;它不需要存在于该方法之外。
此外,这仅在设置了一位时才有效。现在你只使用一位,但如果你想修改它以使用多位,则需要进行另一项更改。
每次调用 toDec
并且条件为 true
时,您都会覆盖 number
。您可能希望使用 +=
添加到 number
而不是使用 =
覆盖之前的值。
关于java - 在 Java 中将二进制转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643958/