JAVA中的二进制到十进制数转换器?

时间:2017-08-28 20:26:24

标签: java

我的代码有什么问题。 它为任何输入值打印1。

package Assign;
import java.util.Scanner;
import java.lang.*;

public class Assignment {

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    int num = s.nextInt();
    int x = 1;
    int sum = 1, i = 0;

    while (num > 0) {
        x = num % 10;
        if (x == 1) {
            sum = sum + (2 * i);
        }
        num = num / 10;
        i++;
    }
    System.out.println(sum);
}
}

4 个答案:

答案 0 :(得分:0)

两个问题:

1)您需要将2 ^ i添加到sum,而不是2 * i

2)总和从1开始而不是0,这意味着答案总是比应有的多1个。

答案 1 :(得分:0)

如果您不需要自己开发算法,可以采用较短的方法:

System.out.println(new BigInteger(String.valueOf(num), 2));

答案 2 :(得分:0)

一种简单的方法。

System.out.println(Integer.parseInt(binaryString,2));

答案 3 :(得分:0)

在程序中,当 (num> 0) 在if块中时,变量sum被修改的唯一情况。 考虑if块

if (x == 1) {
   sum = sum + (2 * i);
}

因为变量 i = 0

sum = sum + (2 * i);

评估为

sum = sum + (2 * 0);
sum = sum + 0;
sum = sum;

由于变量 sum = 1 ,输出始终为1.

考虑到另一种可能性,当 (num <= 0) 时跳过while循环,因为 sum = 1 ,输出为1.

对于Java中的Binary to Decimal数字转换器,请查看

http://www.java2novice.com/java-interview-programs/binary-to-decimal/