2016-01-23 71 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); 
    } 
} 

}