[英]Java - Convert decimal to binary - Integer - Recursive function
嘿,我真的想将十进制int转换为二进制int,但不成功。
请帮我。
而且我不想将其设置为“ System.out.println()”,因为我已经完成了。
谢谢!
`我需要获取十进制整数并返回二进制整数的递归函数
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();
}
错误...
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
decToBin(number / 2); System.out.print(number % 2);
最后,在return语句中,您正在创建新的字符串,因此要生成"100101"
您将生成""
"1"
"01"
"101"
0101"
"00101"
,最后生成“ 100101"
。要避免使用StringBuilder
及其append
方法。
这有点旧,但是为了参考并给出正确的答案,这是您需要做的:
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;
}
void intToBinary(int num) {
if (num < 2) {
System.out.print(num);
return;
} else {
intToBinary(num / 2);
intToBinary(num % 2);
}
}
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));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.