2016-01-23 7 views
5

Pracuję nad programem, który wyświetli trzy opcje. Cała trójka to:Tworzenie programu java do konwersji dziesiętnego na binarny?

  • Konwersja dziesiętnej do binarnego
  • Konwersja binarnej na dziesiętną
  • Zakończ.

Jeśli użytkownik wpisze "Exit" w wyborze, system przyjmie numer i powie "Żegnaj".

Od tej chwili to właśnie mam.

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

Pytania, które mam, są następujące.

  1. W próbuje przekonwertować numer w Odpowiedzi2 do binarnego lub przecinku, nie mogę dowiedzieć się, jak właściwie podzielić answer2 się do tej pracy. Myślałem o zrobieniu pętli, ale nie jestem pewien, co jeszcze mogę zrobić. Czy możesz przez przypadek powiedzieć mi, co muszę zrobić? Jestem nowy w Javie, wciąż próbuję nauczyć się lin.

  2. Podczas konwersji dziesiętnego na binarny, jego drukowania 6-bitowego lub innego bitu, chcę, aby był 8-bitowy. Jak mogę to naprawić? Przykład:

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

Czy możesz podać przykład wytwarzania numer 6-bitowej? –

+0

po prostu napisz ciąg binarny z wiodącym "0" w razie potrzeby. – OldProgrammer

+0

NIE ZAWSZE 6. Właśnie zdałem sobie z tego sprawę, jego działanie. Wpisz swój wybór: 1 Wprowadź numer: 16 8-bitowy reprezentacja binarna jest: 10000 – chatslayer

Odpowiedz

0

1) W próbuje przekonwertować numer w Odpowiedzi2 do binarnego lub przecinku, ja nie może dowiedzieć się, jak właściwie podzielić answer2 się do tego, aby pracy. Myślałem o zrobieniu pętli, ale nie jestem pewien, co jeszcze mogę zrobić. Czy możesz przez przypadek powiedzieć mi, co muszę zrobić? Jestem nowy w Javie, wciąż próbuję nauczyć się lin.

Co masz na myśli "jak właściwie podzielić odpowiedź2"?

przekonwertować z łańcucha binarnego na dziesiętny Proponuję

int decimal = Integer.parseInt(binaryString, 2) 

z drugiej strony można użyć

String binary = Integer.toBinaryString(decimalNumber); 

2) konwersji dziesiętny na binarny, jego wydrukowanie 6- trochę, chcę to specjalnie dla 8-bitów. Jak mogę to naprawić?

Jeśli chcesz 8 bit można dodać wystarczającą 0s wypełniające na początku łańcucha binarnego:

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

Oczywiście nie jest to najbardziej skuteczny sposób, ale myślę, że to w porządku

1

Do listy czynności do wykonania można użyć skrzynki przełączników. Przełącznik wykonuje czynność zależną od wyboru, możesz również zaprojektować wykonywanie wielu czynności.dla lepszego zrozumienia obserwować tą link

Nie zmienisz swojej logiki konwersji, ale w procesie decyzyjnym i zastąpić go z przełącznikiem

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 

      } 
     } 
    } 
} 

wyjściowy

================================== 
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 

dodatkowo: dlaczego stosowanie statyczne dla metody binaryToDecimal, ale nie dla binarnej. Zrobiłem zarówno obiekt obiektu poziomie. robi więcej, odkąd tworzysz obiekt do wyboru. Ale stworzenie obiektu dla każdego wyboru nie jest konieczne można użyć tego samego obiektu stworzył wiele czasu, ponieważ nie używając żadnych zmiennych składowych, aby uzyskać zadanie, patrz poniższy kod

 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; 

     } 
0

Oto jak zrobiłem ten program .it jest całkowicie oparty na rekursji

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

}

Powiązane problemy