2016-01-23 72 views
5

我正在研究一個將顯示三種選擇的程序。三是:創建一個Java程序將十進制轉換爲二進制?

  • 十進制轉換爲二進制
  • 二進制轉換爲十進制
  • 退出。

如果用戶在選擇中寫入「退出」,系統將採取該號碼並說出「再見」。

截至目前,這是我的。

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 
    
+0

你能給產生6位數字的例子嗎? –

+0

只是根據需要填充前導「0」的二進制字符串。 – OldProgrammer

+0

它並不總是6.我剛剛意識到這一點,它的做法。輸入您的選擇:1 輸入數字:16 8位二進制表示是:10000 – chatslayer

回答

0

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; 

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

1

您可以使用開關盒來完成要執行的動作列表。交換機根據選擇執行操作,您可以設計執行多個操作。爲了更好地理解按照這個link

我沒有改變的轉換邏輯,但決策過程,並用開關代替它

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

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

}