2014-01-19 55 views
-1

我想將十進制轉換爲二進制,下面的代碼不起作用。 請幫我改正代碼。將十進制轉換爲二進制錯誤

package mainpackage; 

import java.util.*; 

class MainClass { 

public MainClass() { 
} 

public static int binaryfinder(int n) { 
    int a[] = new int[8]; 
    int i = 0; 
    int b = 0; 
    int n1 = n; 
    while (n1 > 0) { 
     a[i] = n1 % 2; 
     i++; 
     n1 = n1/2; 
    } 
    System.out.printf("Binary number of %d is = ", n); 

    for (int j = i - 1; j >= 0; j--) { 

      b += ((10^j) * a[j]); 
    } 
    return b; 

} 

public static void main(String[] args) { 
    System.out.println("\nEnter the number to find its binary value:\n"); 
    Scanner k = new Scanner(System.in); 
    int num = k.nextInt(); 
    int inBin = binaryfinder(num); 
    System.out.print(inBin); 


} 

}

我點擊運行後,它會要求輸入的二進制值,當我輸入值,它說,「0 =二進制數」不管是什麼,我總是進入它輸出「二進制數0 =」。 沒有錯誤引發。

+2

很確定'while(j!= 0){+((10^j)*​​ a [j]); '永遠運行。 –

+0

這是一個家庭作業。如果沒有,那麼有內聯的方式來找到二進制文件。 –

+1

這是使用您的調試器來調試程序的地方,它可以幫助您找到問題所在。 –

回答

1
Integer.toBinaryString(i) 

這應該做的伎倆在Java

0

你有一個無限循環,這就是爲什麼你的程序永遠不會終止:

while (j != 0) { 
    b += ((10^j) * a[j]); 
} 
0

我點擊運行後,它會要求進入二進制值,當我輸入該值時,它會顯示「二進制數爲0 =」無論我輸入什麼,它總是輸出「二進制數爲0 =」。沒有錯誤被拋出。

  • 永不落幕while

    while (j != 0) { b += ((10^j) * a[j]); }

  • 你正在改變的n值最後經過while循環:n = 0等輸出

    while (n > 0) { a[i] = n % 2; i++; n = n/2; } System.out.println(output);

  • 您的程序(作爲一個整體)是不正確


其他選項:

1)使用Integer.toBinaryString()

2)使用的基本公式轉換成十進制 - - > binary

int n = 10; 
String output = ""; 

do { 
    output = (n % 2) + output; // reverse string 
    n = n/2; 
} while (n > 0);