6

ユーザーに正の整数を入力するように求める方法は知っていますが、10 進数や文字列の入力などの入力エラーを回避するためにコードにアプローチする方法はわかりません。

  int seedValue;
  double angle, gunpowder;

  System.out.println("Please enter a positive integer seed value: ");
  seedValue = input.nextInt();

     while (seedValue <= 0) {  
        System.out.println("Please enter a positive integer seed value: ");
        seedValue = input.nextInt();
     }

     System.out.println("That target is " +
      threeDec.format(gen.nextDouble() * 1000) + "m away.");
4

5 に答える 5

8

これはアプローチかもしれません:

  • stringを使用して入力を値として読み取りますScanner.readLine();
  • Integer.parseIntメソッドを使用して文字列を int に変換してみてください。NumberFormatExceptionこのメソッドは、入力文字列に小数や無効な数字が含まれている場合にをスローします。
  • 入力値が前のステップで適切に解析されている場合は、否定をチェックします
于 2013-09-14T18:13:02.297 に答える
1
System.out.println("Please enter a positive integer seed value: ");
boolean flag = true;
while(flag) {
  try {
    seedValue = Integer.valueOf(input.nextLine());
    if (seedValue <= 0) {
      System.out.println("input is not a positive Integer ");
      System.out.println("Please enter a positive integer seed value: ");
    } else {
      flag=false;
    }
  } catch(NumberFormatException e) {
      System.out.println("input is not a positive Integer ");
      System.out.println("Please enter a positive integer seed value: ");
  }

}
于 2013-09-14T18:17:33.603 に答える
0

「入力」は Scanner クラスであると想定しています。その場合は、 Scanner.nextInt() メソッドの javadoc を確認してください。整数が入力されていない場合、いくつかの例外がスローされます。そのため、呼び出しを try catch ブロックに入れて、これらの例外を探す必要があります。それでも負の値を入力できるため、次にできることは、入力が 0 未満かどうかを確認し、そうであれば、正の値のみを入力する必要があることをユーザーに知らせるメッセージを出力することです。

于 2013-09-14T18:16:26.000 に答える