【问题标题】:Incorrect function for decimal-to-binary conversion?十进制到二进制转换的函数不正确?
【发布时间】:2012-04-26 03:12:31
【问题描述】:

我正在尝试创建一种将十进制转换为二进制的方法。这是我到目前为止写的(不能正常工作):

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));
}

【问题讨论】:

  • 这里没有小数 你真正要做的是转换为可打印的 ASCII。

标签: java math binary decimal converter


【解决方案1】:

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

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

请注意,当 tempDecimal 等于 0 时,此循环会循环,这意味着对于非零输入,循环根本不应该循环,而对于零输入,循环将永远循环。尝试将其重写为

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

另外,注意输入 0 和输入负数;它们不会以您当前的方法正确显示。

其他一些小问题:

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

希望这会有所帮助!

【讨论】:

  • 感谢您的建议...我是编程新手...我对编程规则了解不多...现在我明白了...下次再也不会发生...谢谢再次...
猜你喜欢
  • 2020-05-16
  • 1970-01-01
  • 2011-01-10
  • 2023-04-11
  • 2023-04-02
  • 1970-01-01
  • 2016-02-09
  • 2016-08-26
相关资源
最近更新 更多