-1

我已经尝试让一个程序也能正常工作,但问题是,这与我想要的输出不同。

笔记 **

这就是我想要的..

输入起始基数: 它应该是二进制或八进制或六进制

输入底数: 应该是十进制

输入数字: 如果输入 2 作为起始基数,则只能输入 1 和 0。如果输入 16 作为起始基数 0-9,则可以使用 AF。

和我做什么:(

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");
4

1 回答 1

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.
       } 
      }
  }
于 2013-06-11T18:29:56.263 回答