我已经尝试制作一个可行的程序,但问题是,这与我想要的输出不一样。
注意**
这就是我想要的......
输入起始基数:它应该是二进制或八进制或六进制
输入结束基数:它应为十进制
输入数字:如果输入2作为起始基数,则只能输入1和0。如果输入16作为起始基数0-9并且可以使用A-F。
和我做的:(
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a starting base: ");
String binaryNumber = scanner.nextLine();
System.out.println("Enter a end base: ");
String octalNumber = scanner.nextLine();
System.out.println("Enter a number: ");
String decimalNumber = scanner.nextLine();
int myInt = Integer.parseInt(binaryNumber, 2);
int myInt2 = Integer.parseInt(octalNumber, 8);
int x = myInt;
System.out.println(
binaryNumber + " in Binary, is "
+ Integer.toString(myInt, 8) + " in Octal" + " and "
+ Integer.toString(x, 10) +" in decimal");
答案 0 :(得分:1)
这是你需要做的。弄清楚代码并理解。您有Scanner#nextInt()
方法来读取整数。您不必使用nextLine()
方法。更重要的是,Scanner#nextInt(int radix)
接受指定基数形式的输入。如果您不在该表单中输入输入,则会引发异常。您可以捕获该异常以向用户显示错误消息。
您的目标startBase
,endBase
以及用于binaryNumber
的变量不匹配。请命名您的变量,以表达它们的目的。
在此处查看代码的修改版本:
import java.util.*;
public class Tester{
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a starting base: ");
int startBase = scanner.nextInt();
System.out.println("Enter a end base: ");
int endBase = scanner.nextInt();
int number=0;
try{
System.out.println("Enter a number: ");
number= scanner.nextInt(startBase);
System.out.println("Entered number:"+number+"(base"+startBase+")");
System.out.println("Converted number:"+Integer.toString(number,endBase)+"(enbase"+endBase+")");
}catch(InputMismatchException e){
System.out.println("Invalid input for the given radix");
e.printStackTrace(); //you can comment it if you don't need this.
}
}
}