我正在编写一个java程序来将二进制数转换为十进制数,我已经设法让我的程序在这方面工作。
我的问题是如何让用户必须输入二进制数,否则会弹出错误并且问题将结束? 另外,如何重复我的语句以便用户可以计算多个二进制数转换?
如果您给出答案,您能否解释一下每个步骤的工作原理并展示代码的外观?
我当前的程序是这样的:
public static void main(String[] args) {
Scanner input = new Scanner( System.in );
System.out.println("Enter a binary number: ");
int binarynum =input.nextInt();
int binary=binarynum;
int decimal = 0;
int power = 0;
while(true){
if(binary == 0){
break;
} else {
int temp = binary%10;
decimal += temp*Math.pow(2, power);
binary = binary/10;
power++;
}
}
System.out.println("Binary = "+binarynum+" Decimal = "+decimal); ;
}
最佳答案
此版本不断要求用户提供二进制值。
如果不是二进制,则会抛出异常。
最后,要停止该过程,您只需输入 END
作为输入即可。
public static void main(String[] args) {
while (true) {
Scanner input = new Scanner(System.in);
System.out.print("Enter a binary number (END to exit): ");
try {
String inputValue = input.next();
if (inputValue.equals("END")) {
break;
}
if (!inputValue.matches("[01]+")) {
throw new Exception("Invalid binary input");
}
int binarynum = Integer.valueOf(inputValue);
int decimal = getDecimalValue(binarynum);
System.out.println("Binary = " + binarynum + " Decimal = " + decimal);
System.out.println();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
public static int getDecimalValue(int binary) {
int decimal = 0;
int power = 0;
while (true) {
if (binary == 0) {
break;
} else {
int temp = binary % 10;
decimal += temp * Math.pow(2, power);
binary = binary / 10;
power++;
}
}
return decimal;
}
关于Java 二进制到十进制格式/如何分配正确的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49441077/