我想将十进制转换为二进制,以下代码不起作用。 请帮我纠正代码。
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 = “。 没有错误被抛出。
答案 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);