【发布时间】:2014-04-24 21:46:45
【问题描述】:
我的代码是打印用户输入的二进制数的十进制等值。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.print("Enter a binary integer: ");
int b=in.nextInt();
int digits=1;
int q=b;
//determine the number of digits
while(q/10>=1){
++digits;
q/=10;
}
System.out.println(digits);
int decimal=0;
int i=0;
//pick off the binary number's digits and calculate the decimal equivalent
while(i<=digits-1){
decimal+=b/Math.pow(10,i)%10*Math.pow(2,i);
i++;
}
System.out.println(decimal);
}
}
当我输入 1101 时,它会输出 13,这是正确的答案。然而,当我 测试数字 11001,十进制等值应该是 25,但它输出 26。我试试 修复它,但找不到错误在哪里。你们能帮帮我吗?
【问题讨论】:
-
如果你想让用户输入一个二进制数,你不应该要求一个整数;
String会更合适。首先,要求一个整数将您限制为 10 位,因为最大可能的十进制整数是 10 位。其次,不能泛化为十六进制。