2013-02-15 134 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();   
}