0

这就是我想要做的:

用户在程序中输入数字,程序会用它来处理。

但是如果用户只输入“enter”键(或“return”键),eclipse 会说

线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:0

我需要eclipse说的是“无效输入”并再次要求输入。

这就是我获取输入的方式:

我在一个函数中使用一个缓冲读取器,并且每当我需要读取用户的输入时我都会调用该函数。如果您想参考它,这是我的此功能的代码。此外,该程序是一个覆盖优化程序,以防您也想知道这一点。非常感谢你的帮助!

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

0

如果没有看到更多您的代码,我不确定,但我会这样做:

while (rvalue.trim().isEmpty())
{
  System.out.println("invalid input");
  rvalue = nerd.readLine();
}

rvalue = nerd.readLine();声明后

于 2012-11-27T20:22:44.633 回答