0

readInput メソッドと writeOutput メソッドを実行するこのプログラムのメイン メソッドは、別の Java ファイルにあります。私の質問は次のとおりです。

これがそのペーストビンです

文字列を入力する前に、Java が 31 行目と 32 行目で範囲外の例外を出すのはなぜですか? 次の「if、else if、else」ステートメントで使用するために、文字列の最初の文字を char として保存しようとしています。

何が問題なのかについてのヒントはありますか? これを入力しているときにうっかり書き忘れてしまったのは、単純なことだと断言できます。

リンクが機能しない人のために、コードは次のとおりです。

    System.out.println("Is the nature increase, decrease, or neutral?");
char nature;
nature = keys.nextLine().toLowerCase().charAt(0);

if(nature=='i')
  natureMult=1.1;
else if(nature=='n')
  natureMult=1.0;
else if(nature=='d')
  natureMult=0.9;
else
{
  System.out.println("Error! You entered an invalid multiplier!");
  System.exit(0);
}
4

1 に答える 1

1

Scanner#nextInt改行文字を消費しません

代わりに、Scannerここの場合のように、次のメソッドに渡されます。問題のステートメントのnextInt前に改行文字を消費していないため、インスタンスはブロックされていません。文字を消費するステートメントの前にステートメントを追加しますnextLine()ScannerkeysnextLine()

keys.nextLine(); // add this 
nature = keys.nextLine().toLowerCase().charAt(0);
于 2013-10-22T19:22:44.790 に答える