十进制到二进制转换的函数不正确?

时间:2012-04-13 18:19:14

标签: java math binary decimal converter

我正在尝试创建一个将Decimal转换为Binary的方法。以下是我到目前为止所写的内容(效果不正常):

public static String D2B(int decimal){
    String binaryValue="";
    for (int tempDecimal=decimal;0==tempDecimal;tempDecimal/=2){
        binaryValue=tempDecimal%2+binaryValue;
    }
    return binaryValue;
} 


public static void main(String[]args){
    int myValue=127;
    System.out.println(D2B(myValue));
}

1 个答案:

答案 0 :(得分:2)

我认为循环中的条件不正确:

for(int tempDecimal=decimal;0==tempDecimal;tempDecimal/=2)

请注意,当tempDecimal等于0时,这会循环,这意味着循环不应该对非零输入进行循环,并且将永远循环以进行零输入。尝试将其重写为

for(int tempDecimal = decimal; 0 != tempDecimal; tempDecimal /= 2)

另外,注意0作为输入,负数作为输入;用你现在的方法来说,它们不会正确。

其他一些小屁股:

  • 我强烈建议您正确缩进代码并在运算符之间放置空格以提高可读性。它使代码更容易阅读,我想如果你有更多的空间,你会更容易发现错误。
  • 没有理由在此函数中创建第二个变量tempDecimal。 Java参数按值传递,因此您对参数所做的更改不会显示在调用者中。由于您未在其他任何地方使用decimal值,因此额外变量是多余的。

希望这有帮助!