将十进制转换为二进制 Java

新手上路,请多包涵

我正在尝试使用 Java 将用户输入的十进制数转换为二进制数。

我收到错误。

 package reversedBinary;
import java.util.Scanner;

public class ReversedBinary {

public static void main(String[] args) {
    int number;

    Scanner in = new Scanner(System.in);

    System.out.println("Enter a positive integer");
    number=in.nextInt();

    if (number <0)
        System.out.println("Error: Not a positive integer");
    else {

        System.out.print("Convert to binary is:");
        System.out.print(binaryform(number));
}

}

private static Object binaryform(int number) {
    int remainder;

    if (number <=1) {
        System.out.print(number);

    }

    remainder= number %2;
    binaryform(number >>1);
    System.out.print(remainder);

    {
    return null;
} } }

如何在 Java 中将十进制转换为二进制?

原文由 Euridice01 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 870
2 个回答

您的 binaryForm 方法陷入无限递归,如果 number <= 1 则需要返回:

 import java.util.Scanner;

public class ReversedBinary {

    public static void main(String[] args) {
        int number;

        Scanner in = new Scanner(System.in);

        System.out.println("Enter a positive integer");
        number = in.nextInt();

        if (number < 0) {
            System.out.println("Error: Not a positive integer");
        } else {

            System.out.print("Convert to binary is:");
            //System.out.print(binaryform(number));
            printBinaryform(number);
        }
    }

    private static void printBinaryform(int number) {
        int remainder;

        if (number <= 1) {
            System.out.print(number);
            return; // KICK OUT OF THE RECURSION
        }

        remainder = number % 2;
        printBinaryform(number >> 1);
        System.out.print(remainder);
    }
}

原文由 tlehman 发布,翻译遵循 CC BY-SA 3.0 许可协议

Integer.toBinaryString() 是一种内置方法,效果很好。

原文由 Vaibhav 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题