import java.io.*;
import java.util.*;
public class Binary {
public static void main(String args[]) {
int i = 0, j = 0, num;
Scanner in = new Scanner(System.in);
int arr[] = new int[100];
System.out.println("enter the number");
num = in.nextInt();
while (num != 1) {
j = num % 2;
num = num / 2;
arr[i] = j;
i++;
}
for (i = i; i <= 0; i--) {
System.out.print("The binary number: " + arr[i]);
}
}
}
我编写了这个程序,将十进制输入转换为相应的二进制值,程序接受输入,但不显示输出,即二进制值。请帮忙
答案 0 :(得分:0)
条件应为while(num!=0){ //do calculations}
并将for循环的条件更改为for(i=i;i>=0;i--){}
答案 1 :(得分:0)
正如已经指出的那样,你需要改变
的条件while (num != 1) {
到
while (num > 0) {
由于num
可能为2,因此您的版本容易出现无限循环。
更改for
周期,如下所示:
for (i = arr.length - 1; i >= 0; i--) {
System.out.print("The binary number: " + arr[i]);
}
但是为了能够做到这一点,您需要知道需要使用多少元素,因此将arr
的声明更改为此
int arr[] = new int[(int)Math.ceil(Math.log(num) / Math.log(2))];
但是为了能够这样做,您需要在声明num
之前初始化arr
。代码未经测试,如果有任何拼写错误,请告诉我。
答案 2 :(得分:0)
您可以使用Integer
类,它是静态方法toBinaryString(int i)
。此方法将int转换为其二进制值,并将其作为String返回。
如果我正确地理解了你想要实现的目标,你可以写下:
Scanner in = new Scanner(System.in);
System.out.println("enter the number");
int num = in.nextInt();
String binary = Integer.toBinaryString(num);
System.out.print("The binary number: " + binary);