繁体   English   中英

Java-将十进制转换为二进制-整数-递归函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM