0

これは私がやろうとしていることです:

ユーザーがプログラムに数字を入力すると、プログラムはそれを処理します。

しかし、ユーザーが「Enter」キー(または「Return」キー)を入力するだけの場合、Eclipseは言う

スレッド「メイン」の例外 java.lang.StringIndexOutOfBoundsException: 文字列インデックスが範囲外です: 0

私がEclipseに言う必要があるのは「無効な入力」であり、もう一度入力を求めます。

これは私が入力を取得する方法です:

私は 1 つの関数で 1 つのバッファリングされたリーダーを使用しており、ユーザーからの入力を読み取る必要があるときはいつでも関数を呼び出しています。参照したい場合に備えて、この関数のコードを次に示します。また、このプログラムはカバレッジ最適化プログラムでもあります。手伝ってくれてどうもありがとう!

public static String Reader() {
  BufferedReader nerd = new BufferedReader(new InputStreamReader(System.in));
  String rvalue = "0";
  try {
    rvalue = nerd.readLine();
    if(elements_typed == 0) {
      Integer.parseInt(rvalue);
    }
    if(sets_typed == 0) {
      Integer.parseInt(rvalue);
    }
    return rvalue; 
  } catch (IOException e) {
    System.out.print("ERROR: Input must be an integer in [1, infinity]!");
    display_menu();
  } catch (NumberFormatException e) {
    System.out.print("ERROR: Input must be an integer in [1, infinity]!\n\n");  
    if(elements_typed == 0) {
      System.out.print("Enter number of elements (n):\n");
      rvalue = Reader();
    }
    if(sets_typed == 0) {
      System.out.print("Enter number of sets (n):\n");
      rvalue = Reader();
    }
  }
  return rvalue;
}
4

1 に答える 1