Предложения по проверке поля ввода [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Предложения по проверке поля ввода [закрыто]

Сообщение Anonymous »

В настоящее время я работаю над консольным приложением, использующим строгую архитектуру Java MVC. Есть 7 полей. Раньше, когда пользователь вводил данные в недопустимом формате, это указывалось им только в конце.
Это не очень хорошая практика, потому что, если пользователь заполняет более 10 полей и только после этого ему сообщают, что поле, введенное в начале, неверно, ему приходится вводить все заново, что приводит к ухудшению пользовательского опыта.
Поэтому я решил выполнить проверку по каждому полю. Для этого я добавил цикл для каждого поля, но теперь считаю, что это не очень хороший подход, так как это означает добавление 10 циклов для 10 полей.
Есть ли какой-либо альтернативный способ добиться проверки каждого поля с использованием только Java?
Примечание: Я создаю серверное консольное приложение с использованием Java; никакой интерфейс не задействован.
public void ExecuteMenu() {
логический выход = false;
do {
displayMenu();
int userChoice = scanner.nextInt();
scanner.nextLine();

switch (userChoice) {
case 1 -> addEmployee();

case 2 -> updateEmployee();

case 3 -> viewEmployeeById();

case 4 -> viewAllEmployees();

case 5 -> deleteEmployee();

case 6 -> {
System.out.println("Are you want to exit? 1.Yes 2.No");
exit = (1 == scanner.nextInt());
}

default -> System.out.println("Invalid option");
}
} while (!exit);

System.out.println("Application exited...");
}

public void displayMenu() {
System.out.println("""
1.Добавить сотрудника
2.Обновить сотрудника
3.Просмотреть сотрудника по идентификатору
4.Просмотреть всех сотрудников
5.Удалить сотрудника
6.Выйти
""");
System.out.print("выберите вариант: ");
}
public void addEmployee() {
System.out.println("Вы решили добавить сотрудника");
String name = getValidatedName();
LocalDate dateOfBirth = getValidatedBirthDate();
System.out.print("Enter the phone number: ");
long phoneNumber = scanner.nextLong();
scanner.nextLine();

String email = getValidatedEmail();

System.out.print("Enter the address: ");
String address = scanner.nextLine();

System.out.print("Enter the pincode: ");
int pinCode = scanner.nextInt();
scanner.nextLine();

System.out.print("Enter the salary: ");
double salary = scanner.nextDouble();
scanner.nextLine();

String statusMessage = getEmployeeController().addEmployee(name,
dateOfBirth, address, phoneNumber, salary, email, pinCode);
System.out.println(statusMessage);
}
public void updateEmployee() {
System.out.println("You chose to update employee");
System.out.print("Enter employee id: ");
int id = scanner.nextInt();
scanner.nextLine();

if (getEmployeeController().isEmployeePresent(id)) {
String email = getValidatedEmail();
String statusMessage = getEmployeeController().updateEmployee(id,
email);
System.out.println(statusMessage);
} else {
System.out.println("Employee not found");
}
}
public String getValidatedName() {

while (true) {
System.out.print("Enter the name: ");
String name = scanner.nextLine();

String validationMessage = getEmployeeController()
.validateName(name);
if (null == validationMessage)
return name;

System.out.println(validationMessage);
}
}
public String getValidatedEmail() {

while (true) {
System.out.print("Enter the email: ");
String email = scanner.nextLine();

String validationMessage = getEmployeeController()
.validateEmail(email);
if (null == validationMessage)
return email;

System.out.println(validationMessage);
}
}
public LocalDate getValidatedBirthDate() {

while (true) {
try {
System.out.print("Enter the date of birth(dd/MM/yyyy): ");
LocalDate dateOfBirth = LocalDate.parse(scanner.nextLine(),
DateTimeFormatter.ofPattern("dd/MM/yyyy"));

String validationMessage = getEmployeeController()
.validateDateOfBirth(dateOfBirth);
if (null == validationMessage)
return dateOfBirth;

System.out.println(validationMessage);
} catch (DateTimeParseException invalidDateException) {
System.out.println("Invalid date format. Use dd/MM/yyyy");
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... uggestions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»