2015-02-08 54 views
0

为二进制我得到了下面的代码:转换小数使用递归

public class decToBin { 

public static void main(String args[]) { 

    int number = 32; 

    System.out.println(decToBinWrapper(number)); 
} 

public static String decToBinWrapper(int number) { 

    return decToBin(number, ""); 
} 

public static String decToBin(int number, String bin) { 
    if (number >= 1) 
     return decToBin(number/2, bin + Integer.toString(number % 2)); 
    else 
     return "0"; 

} 
} 

这应该十进制转换为二进制,但只打印出“0”,而不是二进制字符串。有人能告诉我我做错了吗?

+1

以防万一它是对你有用:整数.toBinaryString() – 2015-02-08 02:52:19

+0

这里没有小数。 'number'已经是二进制的了。 – EJP 2017-08-22 04:31:17

回答

1
else 
    return "0"; 

我想你可能意思是return bin,因为你正积累到那个字符串中。您只需在当前实施中丢弃bin

+0

他还需要* prepend *值,而不是追加使数字顺序正确 – nem035 2015-02-08 02:49:50

3

您应该bin变量返回:

else 
    return bin; 

你也想前插Integer.toString(number % 2)以前的字符串,而不是将其追加:

return decToBin(number/2, Integer.toString(number % 2) + bin);