2014-01-19 37 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);