0

10進数を2進数に変換する簡単なプログラムを終了しました(32bit)。ユーザーがオーバーフロー番号(以上)を入力した場合に、ある種のエラーメッセージを実装したいと思います2147483647。試してif_else , loopみましたが、すぐにそれもできないことがわかりました。そのため、入力を文字列として取得し、などを使用することをめちゃくちゃにしましたが.valueOF()、それでも解決策にたどり着くことができないようです。

a >2147483648そもそも値を保存できない場合とどのように値を比較できるかわかりません。

これが私がgetDecimal()メソッドのために持っている裸のコードです:

numberIn = scan.nextInt();

編集::try/ catchメソッドを試した後、のコンパイルエラーが発生しました

"non-static method nextInt() cannot be referenced from a static context"

私のコードは以下の通りです。

public void getDec()
{
    System.out.println("\nPlease enter the number to wish to convert: ");

    try{
        numberIn = Scanner.nextInt(); 
    }
        catch (InputMismatchException e){ 
        System.out.println("Invalid Input for a Decimal Value");
    }
}      
4

5 に答える 5

3

次のトークンをに変換できない場合はScanner.hasNextInt()、を返すメソッドを使用できます。次に、ブロック内で、を使用して入力を文字列として読み取り、適切なエラーメッセージとともに出力できます。個人的に、私はこの方法を好みます:falseintelseScanner.nextLine()

if (scanner.hasNextInt()) {
    a = scanner.nextInt();
} else {
    // Can't read the input as int. 
    // Read it rather as String, and display the error message
    String str = scanner.nextLine();
    System.out.println(String.format("Invalid input: %s cannot be converted to an int.", str));
}

これを実現する別の方法は、もちろん、try-catchブロックを使用することです。指定された入力をに変換できない場合、Scanner#nextInt()メソッドはをスローします。だから、あなたはただ処理する必要があります:-InputMismatchExceptionintegerInputMismatchException

try {
    int a = scan.nextInt();
} catch (InputMismatchException e) {
    System.out.println("Invalid argument for an int");
}
于 2013-02-09T08:11:46.127 に答える
2

そのステートメントをのtry/catchブロックで囲むことをお勧めしますNumberFormatException

そのようです:

try {
  numberIn = Integer.valueOf(scan.next());
}catch(NumberFormatException ex) {
  System.out.println("Could not parse integer or integer out of range!");
}
于 2013-02-09T08:11:42.867 に答える
0

使用exceptions..数値がその格納容量を超えて入力されると、例外が発生します

docs.oracle.com/javase/tutorial/essential/exceptions/を参照してください

于 2013-02-09T08:12:06.467 に答える
0

hasNextInt()メソッドを使用して、読み取る準備ができている整数があることを確認できます。

于 2013-02-09T08:12:25.217 に答える
0

これを試して :

long num=(long)scan.nextLong();
    if (num > Integer.MAX_VALUE){
    print error.
    }
else
int x=(int)num;

またはキャッチしてみてください:

try{
    int number=scan.nextInt()
    }
}catch(Exception ex){
    print the error
    }
于 2013-02-09T08:13:29.670 に答える