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

时间:2014-05-25 12:00:08

标签: java binary decimal

嘿,我真的试图将十进制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();
}

...错误

4 个答案:

答案 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));
    }
}