你如何在java eclipse中捕获输入键作为错误?

时间:2012-11-27 19:20:12

标签: java

这就是我想要做的事情:

用户在程序中输入数字,程序会对其进行处理。

但是如果用户只是输入“回车”键(或“返回”键)eclipse说

  

线程“main”中的异常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;
}

1 个答案:

答案 0 :(得分:0)

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

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

rvalue = nerd.readLine();声明之后