Java中十进制到二进制的转换

Java中十进制到二进制的转换,java,recursion,methods,binary,Java,Recursion,Methods,Binary,所以我有一个将十进制数转换成二进制数的代码。我对它使用递归算法,但是我似乎无法让它做我想做的事情。代码如下: import java.util.*; public class binaryAddition { public static int toBinary(int a){ int bin = 0; int remainder = 0; if(a >= 1){ toBinary(a/2);

所以我有一个将十进制数转换成二进制数的代码。我对它使用递归算法,但是我似乎无法让它做我想做的事情。代码如下:

import java.util.*;

public class binaryAddition {

    public static int toBinary(int a){


        int bin = 0;
        int remainder = 0;
        if(a >= 1){
            toBinary(a/2);
            bin = (a%2);
        }

        return bin;


    }

    public static void main(String[] args){

        System.out.println(toBinary(3));
        System.out.print(toBinary(3));
    }
}
所以我想返回二进制解,这样我就可以在我的main方法中将它保存为变量。然而,我当前的输出只能给出二进制数的最后一位。我使用数字3作为测试用例,得到1作为print和println方法的输出。为什么会这样,我该如何修复它


非常感谢

首先,您可能希望
toBinary
返回
字符串,而不是
int
。然后在递归时必须使用它的结果。因此,您可以在
if
中编写

bin = toBinary(a / 2) + (a % 2);
当然,假设
toBinary
返回
String


如果您不这样做,那么您就是在丢弃计算结果。

代码正在丢弃递归调用的结果


用方法中的
toBinary
的结果做一些事情。

就像我做的一样

 public static void main(String[] args) 
{
    int n, count = 0, a;
    String x = "";
    Scanner s = new Scanner(System.in);
    System.out.print("Enter any decimal number:");
    n = s.nextInt();
    while(n > 0)
    {
        a = n % 2;
        if(a == 1)
        {
            count++;
        }
        x = x + "" + a;
        n = n / 2;
    }
    System.out.println("Binary number:"+x);
    System.out.println("No. of 1s:"+count);
}
代码正在丢弃递归调用的结果。使用方法中的
toBinary
的结果执行某些操作。