0

我正在做一个 java 项目,我必须从二进制数和小数转换。我现在正在从十进制转换为二进制。这是我拥有的代码。我不知道如何在这段代码中多次循环余数。

public static void decimalToBinary()   {
  Scanner input = new Scanner (System.in);
  System.out.println ("Input decimal number");
  String decimal = input.next();
  int x = Integer.parseInt(decimal);
  int remainder = x%2;
  char[] charArray = decimal.toCharArray();
}

我不知道如何继续这个。到目前为止,感谢您的回答,但我想用一个数组来完成这个问题,这就是问题的挑战。

4

6 回答 6

3

Integer 类有方法来做你想做的事。

public static void decimalToBinary(){
    Scanner input = new Scanner (System.in);
    System.out.println ("Input decimal number");
    String decimal = input.next();
    String binary = Integer.toBinaryString(Integer.parseInt(decimal));
}
于 2013-02-15T14:16:51.870 回答
2

您可以使用 Integer 中的静态辅助方法将十进制转换为二进制字符串,这将为您提供大部分方法:

String inBinary = Integer.toBinaryString(10);   // result will be 1010
于 2013-02-15T14:18:08.673 回答
1
public static void decimalToBinary(){
    Scanner input = new Scanner (System.in);
    while (!*terminatingCondition*) {
      System.out.println ("Input decimal number");
      String decimal = input.next();
      System.err.println(Integer.toString(new Integer(decimal), 2));
  }
}

希望有帮助...

于 2013-02-15T14:15:20.833 回答
1
public static void binaryPrint(int n) throws Exception
{
    if(n > 0)
    {
        binaryPrint(n/2);
        System.out.print(n%2);
    }
    else if(n < 0)
        throw new Exception();          
}
于 2013-02-15T14:47:09.207 回答
0
public static String binaryRepresentation(int i32)
{
   String binary;
   for(int i = 31; i >= 0; i--){
     if((i32 & (1 << i)) > 0) binary += "1";
     else binary += "0";
   }
   return binary;
}

//...

String representation = binaryRepresentation(x);

这是如果你不喜欢Integer.toBinaryString(int)

于 2013-02-15T14:18:01.127 回答
0

我认为你需要这样的东西:

public static void decimalToBinary(){
    Scanner input = new Scanner (System.in);
    System.out.println ("Input decimal number");
    String decimal = input.next();
    int x = Integer.parseInt(decimal);
    int remainder = x%2;
    char[] charArray = decimal.toCharArray();
}

public static char[] findBinary(int decimal) {
    if (decimal == 0) { // base condition
        return new char[0];
    }

    int remainder = decimal % 2;
    char[] remainderCharArray = findBinary(remainder); // Use recursion
    char[] decimalCharArray = decimal.toCharArray();

    char[] resultCharArray = /* Combine two arrays */;

    return resultCharArray;
}

我不确定数字和余数的二进制表示是如何组合的,但你需要在我放/* Combine two arrays */.

如果你不熟悉递归的概念,我建议你阅读一下它。

于 2013-02-15T14:25:12.060 回答