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
的结果执行某些操作。