将十进制值转换为其对应的二进制值

时间:2016-08-18 13:51:36

标签: java

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

我编写了这个程序,将十进制输入转换为相应的二进制值,程序接受输入,但不显示输出,即二进制值。请帮忙

3 个答案:

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