Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将十进制转换为二进制错误_Java - Fatal编程技术网

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

Java 将十进制转换为二进制错误,java,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 >

我想把十进制转换成二进制,但下面的代码不起作用。 请帮我更正代码

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=”。
不会抛出任何错误

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

while (j != 0) {
    b += ((10 ^ j) * a[j]);
}
这在java中应该可以做到

单击“运行”后,它会要求输入二进制值,当我输入值时,它会说,“二进制数0=”无论我输入什么,它都会输出“二进制数0=”。不会抛出任何错误

  • 永无止境的
    循环

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

  • 您正在更改
    n
    的值,最后在
    之后进行循环:
    n=0
    ,因此输出

    while(n>0){
    a[i]=n%2;
    i++;
    n=n/2;
    }
    系统输出打印项次(输出)

  • 您的程序(整体)不正确

其他选择:

1) 使用
Integer.toBinaryString()

2) 使用基本公式转换十进制-->二进制

int n = 10;
String output = "";

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

非常确定
而(j!=0){b+=((10^j)*a[j]);}
永远运行。这是家庭作业吗。如果没有,那么就有内联方法来查找二进制文件。在这里,使用调试器来调试程序可以帮助您找到存在的问题。我假设您不能只执行
Integer.toBinaryString(num)此类问题的正确平台是
int n = 10;
String output = "";

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