【问题标题】:Validating Command Line Arguments User Input验证命令行参数用户输入
【发布时间】:2015-03-26 12:26:50
【问题描述】:

我使用 Java 已经有好几年了,我不太确定验证命令行输入的最佳实践是什么。

我的代码目前的结构如下:

while (true) {
    try { ... break; } catch(...) {...}
}

我觉得这是不好的做法,因为它在某种程度上类似于使用 goto 语句。

有没有更好的方法来验证用户输入?

简单地使用布尔值是首选方法吗?

编辑:

更具体地说,验证来自标准输入(扫描仪)的用户输入。

某种程度:

while(true){
    try {
        userInput = Integer.parseInt(stdin.next());
        break;
    } catch (InputMismatchException e) {
        ...
    }
}

【问题讨论】:

  • 你能说得更具体点吗?你在说什么样的验证?在while循环中?
  • 您可以查看此文档:cse.yorku.ca/~mack/1011/InputValidation.PDF
  • 这是一个奇怪的重复标记。如果有什么我会把它标记为stackoverflow.com/questions/6456219/… 的重复,但实际上它与这两个问题略有不同。
  • 这不是重复的。
  • 为了记录,我投票关闭主要是基于意见,而不是作为一个骗子。

标签: java validation input


【解决方案1】:

虽然你所拥有的内容是可以接受的,但如果他们输入的内容与你的验证不匹配,我更愿意至少输出一条消息。

类似这样的:

int userInput;
System.out.println("Please enter an integer:");
while(true){
    try {
        userInput = Integer.parseInt(stdin.next());
        break;
    } catch (InputMismatchException e) {
        System.out.println("Please enter a valid integer:");
    }
}

【讨论】:

  • 我会使用 break 而不是 valid 标志,就像 OP 最初那样。它具有相同的最终效果,但更简单一些(为什么要保留和更新不需要的状态?)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 2015-07-20
  • 2014-06-05
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
相关资源
最近更新 更多