我正在开发一个可以显示三种选择的程序。三者是:
如果用户写了"退出"在选择中,系统取数字并说“再见”#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);
我遇到的问题是这个。
在尝试将answers2中的数字转换为二进制或十进制时,我无法弄清楚如何实际拆分answer2以使其工作。我想过做一个循环,但不知道我还能做些什么。你能不能告诉我我需要做什么?我是Java的新手,仍在努力学习绳索。
在将十进制转换为二进制时,它打印出6位或另一位,我希望它特别是8位。我怎样才能解决这个问题?例如:
Enter your choice: 1
Enter a number: 16
The 8-bit binary representation is: 10000
答案 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);
}
}
}