簡體   English   中英

創建一個java程序將十進制轉換為二進制?

[英]Creating a java program to convert decimal to binary?

我正在開發一個可以顯示三種選擇的程序。 三者是:

  • 將十進制轉換為二進制
  • 將二進制轉換為十進制
  • 出口。

如果用戶在選擇中寫入“退出”,則系統取數字並說“再見”。

截至目前,這就是我所擁有的。

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 

您可以使用開關案例來完成要執行的操作列表。 交換機根據選擇執行操作,您也可以設計為執行多個操作。 為了更好地理解,請點擊此鏈接

我沒有改變你的轉換邏輯,而是改變決策過程並用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

另外:為什么使用static for binaryToDecimal方法而不是二進制。 我已經使方法對象級別。 因為你正在為一個選擇創建一個對象,所以它會更多。 但是,為每個選擇創建一個對象不需要你可以使用多次創建的同一個對象,因為你沒有使用任何成員變量來完成你的工作,請參閱下面的代碼

        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)在嘗試將answers2中的數字轉換為二進制或十進制時,我無法弄清楚如何實際拆分answer2以使其工作。 我想過做一個循環,但不知道我還能做些什么。 你能不能告訴我我需要做什么? 我是Java的新手,仍在努力學習繩索。

你是什​​么意思“如何實際分開答案2”?

從二進制字符串轉換為十進制我建議你

int decimal = Integer.parseInt(binaryString, 2)

在另一邊你可以使用

String binary = Integer.toBinaryString(decimalNumber);

2)在將十進制轉換為二進制時,它打印出6位,我希望它特別是8位。 我怎樣才能解決這個問題?

如果你想要8位,你可以在二進制字符串的開頭添加足夠的填充0:

String binaryString = Integer.toBinaryString(10);
for(int i = 8 - binaryString.length(); i > 0; i--)
    binaryString = "0" + binaryString;

當然這不是最有效的方式,但我認為這很好

這是我如何做這個程序。它完全基於遞歸

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM