-1

私はすでにプログラムを作成しようとしていますが、問題は、それが私が望むものと同じ出力ではないということです。

ノート **

それが私が欲しいものです..

開始ベースを入力 してください: バイナリまたは 8 進数または 16 進数である必要があります

終点を入力 してください: 10 進数である必要があります

数字を入力してください: 開始ベースとして 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)、指定された基数形式で入力を受け入れます。そのフォームに入力を入力しないと、例外がスローされます。その例外をキャッチして、ユーザーにエラー メッセージを表示できます。

目標 startBaseendBase、およびそれらに使用される変数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 に答える