2012-04-13 101 views
0

我正在尝试创建一个将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)); 
} 
+0

这里没有小数点你真正在做的是转换成可打印的ASCII码。 – EJP 2017-04-06 23:44:56

回答

2

我想在你的循环中的条件是不正确的:

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

注意,这个循环而tempDecimal等于0,这意味着循环根本不应该循环为非零输入,并且将永远循环以输入零。尝试重写它为

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

此外,请注意0作为输入和负数作为输入;他们不会用你目前的方法正确地出来。

其他一些次要尼特:

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

希望这有助于!

+0

ohh ..我的错误...感谢您的帮助... – 2012-04-13 18:25:32

+0

感谢您的建议...我是编程新手...我对编程规则不太了解。现在我明白了...下一个它永远不会发生......再次感谢...... – 2012-04-13 18:38:05