将十进制转换为二进制错误

时间:2014-01-19 14:46:45

标签: java

我想将十进制转换为二进制,以下代码不起作用。 请帮我纠正代码。

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


}

}

单击RUN后,它要求输入二进制值,当我输入值时,它会显示“二进制数0 = ”无论我输入什么,它总是输出“二进制数0 = “。 没有错误被抛出。

3 个答案:

答案 0 :(得分:1)

Integer.toBinaryString(i)

这应该可以解决java中的问题

答案 1 :(得分:0)

你有一个无限循环,这就是为什么你的程序永远不会终止:

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

答案 2 :(得分:0)

  

单击RUN后,它要求输入二进制值,当我输入值时,它表示“二进制数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)使用基本公式转换十进制 - >二进制

int n = 10;
String output = "";

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