嘿,我真的试图将十进制int转换为二进制int,没有成功。
请帮帮我。
我不想制作它' System.out.println()'因为我已经做到了。
谢谢!
`我需要递归函数,它获取十进制int并返回二进制int
public static void decToBin(int number) {
if(number == 0)
return ;
decToBin(number / 2);
System.out.print(number % 2);
}
这就是我所做的......
当我试图获取字符串时:
public static String decToBin(int number) {
if(number == 0)
return "";
return new Integer(number % 2).toString() + new Integer(decToBin(number / 2)).toString();
}
...错误
答案 0 :(得分:2)
public static String decToBin(int number) {
if(number == 0)
return "";
return new Integer(number % 2).toString() + new Integer(decToBin(number / 2)).toString();
}
这种方法缺陷很少。
首先,您不能将""
用作new Integer("")
的参数,因为""
没有值,因此您将看到NumberFormatException。
其他问题是生成结果的顺序。 number % 2
应该放在 decToBin(number / 2)
的结果之后,就像你在第一个例子中那样,在递归decToBin
调用后打印它
decToBin(number / 2);
System.out.print(number % 2);
最后在您的return语句中,您正在创建新字符串,因此要生成"100101"
,您将生成""
"1"
"01"
"101"
{{ 1}} 0101"
,最后是“"00101"
。要避免使用100101"
及其StringBuilder
方法。
答案 1 :(得分:1)
这有点旧,但为了参考并给出正确的答案,这就是你需要做的事情:
public static String dec2Bin(int num) {
String result = ((num % 2 == 0) ? "0" : "1");
if (num == 0 || num == 1) {
return result;
}
return dec2Bin(num/2) + result;
}
答案 2 :(得分:0)
void intToBinary(int num) {
if (num < 2) {
System.out.print(num);
return;
} else {
intToBinary(num / 2);
intToBinary(num % 2);
}
}
答案 3 :(得分:0)
import java.io.*;
class Binary{
public static void main(String args[])throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter the number:");
int n = Integer.parseInt(br.readLine());
System.out.print(Integer.toBinaryString(n));
}
}