Хорошо, у меня есть этот код, который запрашивает ввод для имени пользователя и пароля. Я использовал JOptionPane
. Я хочу, чтобы программа отображала сообщение об ошибке, если на входе в поле имени пользователя есть номер, и возвращается к предыдущему диалоговому окну с повторным запросом имени пользователя. У меня есть цикл while, но он не работает так, как должен. Пожалуйста, помогите. Программа не отображает сообщение об ошибке в моем методе catch
, и он также не зацифровывает диалоговое окно для отображения.не зацикливается и отображает сообщение об ошибке
public class SwingExercise {
public static void main(String[] args) {
String name = "";
String pw = "";
boolean input = true;
boolean hasDigit = false;
while (input) {
try {
while (name.equals("")) {
name = JOptionPane.showInputDialog(null, "Enter username:");
if (name.equals("")) {
JOptionPane.showMessageDialog(
null, "No input.", "Error", JOptionPane.ERROR_MESSAGE);
name = "";
}
while (hasDigit) {
for (int i = 0; i < name.length(); i++) {
if (Character.isDigit(name.charAt(i))) {
throw new InputMismatchException();
}
}
hasDigit = false;
}
}
input = false;
while (pw.equals("")) {
pw = JOptionPane.showInputDialog(null, "Enter password:");
if (pw.equals("")) {
JOptionPane.showMessageDialog(
null, "No input.", "Error", JOptionPane.ERROR_MESSAGE);
pw = "";
}
}
} catch (NullPointerException e) {
System.exit(0);
} catch (InputMismatchException e) {
JOptionPane.showMessageDialog(
null, "Invalid input.", "Error", JOptionPane.INFORMATION_MESSAGE);
}
}
}
Просьба указать любые комментарии относительно других строк в моем коде и если есть лишние строки. Заранее спасибо :)
Я отформатировал ваш код для стиля, поэтому его легче читать. (Никаких изменений, кроме пробелов.) –