Проверка пользовательского ввода для JOptionPane.showInputDialog - PullRequest
5 голосов
/ 23 августа 2010

Я просто изучаю 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 для проверки на нулевое значение перед преобразованием входных данных в целое число, а также несколько различных типов методов if else if.

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 23 августа 2010

Вам нужно сделать что-то подобное для обработки неверного ввода:

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

}

2 голосов
/ 23 августа 2010

Прочтите раздел из учебника по Swing на Как создавать диалоги , который фактически показывает, как легко использовать JOptionPane, чтобы вам не нужно было проверять ввод.

Есть разные подходы, которые вы могли бы использовать. Вы можете использовать поле со списком для отображения вариантов или несколько кнопок для выбора.

В руководстве также показано, как «Остановить автоматическое закрытие диалога», чтобы вы могли проверить вводимые пользователем данные.

...