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

标签 java math binary decimal converters

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

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

最佳答案

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

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

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

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

此外,请注意输入是否为 0 以及输入是否为负数;按照您当前的方法,它们将无法正确显示。

其他一些小问题:

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

希望这有帮助!

关于java - 十进制到二进制转换的函数不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10146185/

相关文章:

java - 使用 JAX-RPC 时如何将错误请求放入死信队列?

java - 使用 Lucene 将整个数据库索引到单个文档中

PHP Image Zoom - 指数级

algorithm - 如果快速排序算法中的第一个元素恰好是最小值怎么办

c++ - 将 double 转换为 C(++) 中遗传算法的位数组

java - Android:更改原始 View 类

java - Spring MVC 和 PDF

c++ - 在 3D 空间中搜索靠近 vector 的点

python - 两个二进制字符串之间的汉明距离不起作用

C++读取二进制数据以进行结构化