JOptionPane.showInputDialog的用户输入验证

时间:2010-08-23 03:13:17

标签: java validation joptionpane

我刚刚学习JAVA并且在代码的这个特定部分遇到了一些麻烦。我搜索了几个网站并尝试了许多不同的方法,但似乎无法弄清楚如何实现一个适用于不同可能性的方法。

int playerChoice = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter number for corresponding selection:\n"
                + " (1) - ROCK\n (2) - PAPER\n (3) - SCISSORS\n")) - 1;

我想我需要进行某种类型的验证,即使用户没有输入以及不是1,2或3的输入。任何人都有关于如何实现这一点的建议吗?

我尝试了一个while循环,一个if语句在将输入转换为整数之前检查null,以及几个不同类型的if else if方法。

提前致谢!

2 个答案:

答案 0 :(得分:5)

你需要做这样的事情来处理错误的输入:

boolean inputAccepted = false;
while(!inputAccepted) {
  try {
    int playerChoice = Integer.parseInt(JOption....

    // do some other validation checks
    if (playerChoice < 1 || playerChoice > 3) {
      // tell user still a bad number
    } else {
      // hooray - a good value
      inputAccepted = true;
    }
  } catch(NumberFormatException e) {
    // input is bad.  Good idea to popup
    // a dialog here (or some other communication) 
    // saying what you expect the
    // user to enter.
  }

  ... do stuff with good input value

}

答案 1 :(得分:2)

阅读How to Make Dialogs上的Swing教程中的部分,它实际上向您展示了如何轻松使用JOptionPane,因此您无需验证输入。

您可以使用不同的方法。您可以使用组合框显示选项,也可以使用多个按钮来选择选项。

本教程还向您展示了如何“停止自动对话框关闭”,以便您可以验证用户输入。