2013-02-15 174 views
1

我正在做一个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(); 
} 

我不知道该如何继续。 谢谢你的回答,但是我想用一个数组来解决问题。

+0

你会在这里找到答案(虽然你可能不一定需要0填充):http://stackoverflow.com/questions/4421400/how-to-get-0-padded-binary java中的整数表示 – 2013-02-15 14:15:54

+0

我不明白剩下的部分将如何帮助您解决问题。你会用伪代码还是英文来描述你的算法? – 2013-02-15 14:18:02

+0

我余下的部分是出来的二进制数的一部分,但是我们需要得到余数的余数等等。打印剩下的部分给出了十进制的二进制数......这就是我能解释我的思维过程的最好方法 – user2070292 2013-02-15 14:21:21

回答

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

希望帮助...

+0

我该如何用数组来完成此操作? – user2070292 2013-02-15 14:17:23

+0

把它放在一个循环? – hd1 2013-02-15 14:18:31

+0

是的,这是我正在尝试做的,但我不知道如何实现它与一个数组加上一个循环 – user2070292 2013-02-15 14:22:04

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

2

您可以使用静态辅助方法整数从十进制转换为二进制字符串,这将使您获得大部分途径:

String inBinary = Integer.toBinaryString(10); // result will be 1010 
+0

噢......好赶上! – hd1 2013-02-15 14:19:37

1

我想你需要的东西是这样的:

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 */

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

2
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();   
}