创建一个java程序将十进制转换为二进制?

时间:2016-01-23 02:47:52

标签: java

我正在开发一个可以显示三种选择的程序。三者是:

  • 将十进制转换为二进制
  • 将二进制转换为十进制
  • 退出。

如果用户写了"退出"在选择中,系统取数字并说“再见”#34;。

截至目前,这就是我所拥有的。

import java.util.Scanner;

public class binary {

    public String toBinary(int n) {
        if (n == 0) {
            return "0";
        }
        String binary = "";
        while (n > 0) {
            int rem = n % 2;
            binary = rem + binary;
            n = n / 2;
        }
        return binary;
    }

    public static int binaryTodecimal(int i) {
        int n = 0;
        for (int pow = 1; i > 0; pow *= 2, i /= 10)
            n += pow * (i % 10);
        return n;
    }

    public static void main(String[] args) {

        int answer2 = 0;
        String answer;

        final int info = 10;
        for (int i = 0; i < info; i++) {

            Scanner kb = new Scanner(System.in);
            System.out.println("==================================");
            System.out.print("Enter your choice: ");
            answer = kb.next();

            if (answer.equalsIgnoreCase("3"))
                System.exit(0);

            System.out.print("Enter a number: ");
            answer2 = kb.nextInt();

            binary decimalToBinary = new binary();
            String binary = decimalToBinary.toBinary(answer2);

            if (answer.equals("1"))
                System.out.println("The 8-bit binary representation is: " + binary);

            binary bd = new binary();
            int n = bd.binaryTodecimal(answer2);

            if (answer.equals("2"))
                System.out.println("The decimal representation is: " + answer2);

我遇到的问题是这个。

  1. 在尝试将answers2中的数字转换为二进制或十进制时,我无法弄清楚如何实际拆分answer2以使其工作。我想过做一个循环,但不知道我还能做些什么。你能不能告诉我我需要做什么?我是Java的新手,仍在努力学习绳索。

  2. 在将十进制转换为二进制时,它打印出6位或另一位,我希望它特别是8位。我怎样才能解决这个问题?例如:

    Enter your choice: 1
    Enter a number: 16
    The 8-bit binary representation is: 10000
    

3 个答案:

答案 0 :(得分:1)

您可以使用开关案例列出要执行的操作。交换机根据选择执行操作,您也可以设计为执行多个操作。为了更好地理解,请遵循此link

我没有改变你的转换逻辑,而是改变决策过程并用switch

替换它
import java.util.Scanner;

public class BinaryToDecimal {

    public String toBinary(int n) {
        if (n == 0) {
            return "0";
        }
        String binary = "";
        while (n > 0) {
            int rem = n % 2;
            binary = rem + binary;
            n = n / 2;
        }
        return binary;
    }

    public int binaryTodecimal(int i) {
        int n = 0;
        for (int pow = 1; i > 0; pow *= 2, i /= 10)
            n += pow * (i % 10);
        return n;
    }

    public static void main(String[] args) {

        int answer2 = 0;
        String answer;

        final int info = 10;
        for (int i = 0; i < info; i++) {

            Scanner kb = new Scanner(System.in);
            System.out.println("==================================");
            System.out.print("Enter your choice: ");
            answer = kb.next();

            switch (answer) {
            case "1": // if the answer is one do this action
                System.out.print("Enter a number: ");
                answer2 = kb.nextInt();
                BinaryToDecimal decimalToBinary = new BinaryToDecimal();
                String binary = decimalToBinary.toBinary(answer2);
                System.out.println("The 8-bit binary representation is: " + binary);
                break; // leave the switch 

            case "2": // if answer is 2 do the following actions
                System.out.print("Enter a number: ");
                answer2 = kb.nextInt();
                BinaryToDecimal bd = new BinaryToDecimal();
                int n = bd.binaryTodecimal(answer2);
                System.out.println("The decimal representation is: " + n);
                break; // leave the switch case

            case "3": // when the answer is 3
                System.out.println("Goodbye");
                System.exit(0);
                // break; you need not use here because you have an exit call

            }
        }
    }
}

输出

==================================
Enter your choice: 1
Enter a number: 25
The 8-bit binary representation is: 11001
==================================
Enter your choice: 2
Enter a number: 11001
The decimal representation is: 25
==================================
Enter your choice: 2
Enter a number: 1000000
The decimal representation is: 64
==================================
Enter your choice: 3
Goodbye

另外:为什么对binaryToDecimal方法使用static而不为binary使用static。我已经使方法对象级别。因为你正在为一个选择创建一个对象,所以它会更多。但是,为每个选择创建一个对象不需要你可以使用多次创建的同一个对象,因为你没有使用任何成员变量来完成你的工作,请参阅下面的代码

        BinaryToDecimal decimalToBinary = new BinaryToDecimal();
        Scanner kb = new Scanner(System.in);
        System.out.println("==================================");
        System.out.print("Enter your choice: ");
        answer = kb.next();

        switch (answer) {
        case "1":
            System.out.print("Enter a number: ");
            answer2 = kb.nextInt();
            String binary = decimalToBinary.toBinary(answer2);
            System.out.println("The 8-bit binary representation is: " + binary);
            break;

        case "2":
            System.out.print("Enter a number: ");
            answer2 = kb.nextInt();
            int n = decimalToBinary.binaryTodecimal(answer2);
            System.out.println("The decimal representation is: " + n);
            break;

        case "3":
            System.out.println("Goodbye");
            System.exit(0);
            break;

        } 

答案 1 :(得分:0)

  

1)在尝试将answers2中的数字转换为二进制或十进制时,我   无法弄清楚如何实际分割答案2   工作。我想过做一个循环,但不知道我还能做些什么。   你能不能告诉我我需要做什么?我仍然是Java的新手   试图学习绳索。

你是什么意思“如何实际拆分答案2”?

从二进制字符串转换为十进制我建议你

Provider

另一方面你可以使用

int decimal = Integer.parseInt(binaryString, 2)
  

2)在将十进制转换为二进制时,它打印出6位,我想要它   特别是8位。我该如何解决这个问题?

如果你想要8位,你可以在二进制字符串的开头添加足够的填充0:

String binary = Integer.toBinaryString(decimalNumber);

当然这不是最有效的方法,但我认为这很好

答案 2 :(得分:0)

这是我如何做这个程序。它完全基于递归

import java.util.*;

class Dec_To_Bin{
        public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        System.out.print("Enter the decimal number:>");
        int n=in.nextInt();
        Dec_To_Bin ob=new Dec_To_Bin();
        ob.binconv(n,0);
    }
public void binconv(int n,int c){
    if(c>7){
        return ;
    }
    else{
        binconv(n/2,c+1);
        System.out.print(n%2);
    }
}

}