有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于十进制转换的java函数不正确?

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

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) 个答案

  1. # 1 楼答案

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

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

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

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

    另外,注意0作为输入,负数作为输入;用你目前的方法,他们不会得出正确的结论

    其他一些次要问题:

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

    希望这有帮助