В настоящее время я работаю над консольным приложением, использующим строгую архитектуру Java MVC. Есть 7 полей. Раньше, когда пользователь вводил данные в недопустимом формате, это указывалось им только в конце.
Это не очень хорошая практика, потому что, если пользователь заполняет более 10 полей и только после этого ему сообщают, что поле, введенное в начале, неверно, ему приходится вводить все заново, что приводит к ухудшению пользовательского опыта.
Поэтому я решил выполнить проверку по каждому полю. Для этого я добавил цикл для каждого поля, но теперь считаю, что это не очень хороший подход, так как это означает добавление 10 циклов для 10 полей.
Есть ли какой-либо альтернативный способ добиться проверки каждого поля с использованием только Java?
Примечание: Я создаю серверное консольное приложение с использованием Java; никакой интерфейс не задействован.
public void executeMenu() {
boolean exit = 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.Add Employee
2.Update Employee
3.View Employee by id
4.View All Employees
5.Delete Employee
6.Exit
""");
System.out.print("choose an option: ");
}
public void addEmployee() {
System.out.println("You chose to add employee");
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
Предложения по проверке поля ввода [закрыто] ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1767388758
Anonymous
В настоящее время я работаю над консольным приложением, использующим строгую архитектуру Java MVC. Есть 7 полей. Раньше, когда пользователь вводил данные в недопустимом формате, это указывалось им только в конце.
Это не очень хорошая практика, потому что, если пользователь заполняет более 10 полей и только после этого ему сообщают, что поле, введенное в начале, неверно, ему приходится вводить все заново, что приводит к ухудшению пользовательского опыта.
Поэтому я решил выполнить проверку по каждому полю. Для этого я добавил цикл для каждого поля, но теперь считаю, что это не очень хороший подход, так как это означает добавление 10 циклов для 10 полей.
Есть ли какой-либо альтернативный способ добиться проверки каждого поля с использованием только Java?
[b]Примечание:[/b] Я создаю серверное консольное приложение с использованием Java; никакой интерфейс не задействован.
public void executeMenu() {
boolean exit = 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.Add Employee
2.Update Employee
3.View Employee by id
4.View All Employees
5.Delete Employee
6.Exit
""");
System.out.print("choose an option: ");
}
public void addEmployee() {
System.out.println("You chose to add employee");
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");
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79856197/input-field-validation-suggestions[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия