【问题标题】:Binary to Decimal number converter in JAVA? [duplicate]JAVA中的二进制到十进制数转换器? [复制]
【发布时间】:2018-02-06 04:30:30
【问题描述】:

我的代码有什么问题。 它为任何输入值打印 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);
}
}

【问题讨论】:

  • 当你调试这段代码时,你到底发现了什么没有意义?
  • x。您将操作的值保存在其中,但从不保存该操作的值。从那里开始。

标签: java


【解决方案1】:

两个问题:

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

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

【讨论】:

    【解决方案2】:

    一个简单的方法来做到这一点。

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

    【讨论】:

    • 您应该包含更多上下文/解释 - 请参阅How to Answer
    • 一个好的java程序员可以轻松理解。
    【解决方案3】:

    如果您不需要自己开发算法,这里有一个更短的方法:

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

    【讨论】:

    • 您应该为您的代码添加更多上下文/解释 - 请参阅How to Answer
    【解决方案4】:

    在程序中,当 (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 where while 循环被跳过,因为 sum = 1,输出为1。

    对于 Java 中的二进制到十进制数转换器,请查看

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

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2014-02-20
      • 2012-11-08
      • 2016-08-26
      • 1970-01-01
      • 2020-06-27
      • 2012-05-28
      • 2013-05-14
      • 2011-01-10
      相关资源
      最近更新 更多