【问题标题】:Java - Convert decimal to binary - Integer - Recursive functionJava - 将十进制转换为二进制 - 整数 - 递归函数
【发布时间】:2014-07-14 08:03:50
【问题描述】:

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

错误...

【问题讨论】:

  • 请告诉我们您的尝试。
  • 你的代码有什么问题?你得到一些错误/不正确的结果吗?还是您只是要求我们将其重写为不使用 System.out.println 的其他内容?
  • 是的,我希望它是字符串或整数...请再看一下我的编辑。
  • 为什么需要递归?
  • 你必须使用String作为结果吗? StringBuilder 会更容易使用。

标签: java binary decimal


【解决方案1】:
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);
    
  • 1234563 @. 为避免它使用StringBuilder 及其append 方法。

【讨论】:

  • 转换二进制整数,而不是十进制数。
  • @EJP 你好。你能澄清你的评论吗?我不是说你错了,但我不确定你的意思。从我看到的问题来看,问题是关于创建以十进制系统提供的 integer 的二进制表示(我不确定 OP 是否要在此处返回 String 或 int 所以没有关注那个)。此外,这个答案并不是为了提供有效的解决方案(因为它显然是关于递归的家庭作业问题),而是指出 OP 在他的代码中犯的一些错误。
【解决方案2】:

这有点旧,但为了参考和给出正确答案,这是你需要做的:

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;
}

【讨论】:

  • 转换二进制整数,而不是十进制数。
【解决方案3】:
    void intToBinary(int num) {

    if (num < 2) {
        System.out.print(num);
        return;
    } else {
        intToBinary(num / 2);
        intToBinary(num % 2);
    }

}

【讨论】:

  • 这会转换二进制整数,而不是十进制数。
【解决方案4】:
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));
    }
}

【讨论】:

  • 代码示例很好,但没有说明它的作用。应该解释一下答案(真的,Integer.toBinaryString(n)是作者想要的我想的)。
猜你喜欢
  • 1970-01-01
  • 2012-04-19
  • 2013-09-23
  • 2014-03-13
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
相关资源
最近更新 更多