Условие «Если» с «do-while l oop»? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть этот метод, который запрашивает у пользователя несколько входных данных, и на основе этих 4 значений в конце создается объект. Ввод пробелов или просто нажатие return не должно быть разрешено, и вопрос должен быть oop, пока не будут выполнены условия.

Кроме того, каждый раз, когда ввод не принимается, появляется сообщение «Ошибка: поле не может быть пустым» следует распечатать. Мой do-while l oop, кажется, работает правильно, за исключением того, что я не знаю, где реализовать свое сообщение об ошибке, чтобы оно отображалось в правильном состоянии?

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

public void registerDog() {
    String name = null;
    do {
        System.out.print("Name?> ");
        name = input.nextLine();
    } while (name.trim().isEmpty());
    name = name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase();
    
    System.out.print("Breed?> ");
    String breed = input.nextLine();
    breed = breed.substring(0,1).toUpperCase() + breed.substring(1).toLowerCase();

    System.out.print("Weight?> ");
    int weight = input.nextInt();

    System.out.print("Age?> ");
    int age = input.nextInt();

    Dog dog = new Dog(name, breed, age, weight);
    doggoList.add(dog);
    System.out.println("\n" + dog.getName() + " has been added to the register.\n" + dog.toString());
}

1 Ответ

1 голос
/ 06 августа 2020

Есть ли причина, по которой вы застряли на do-while l oop? Я бы просто отказался от do-while и вместо этого использовал оператор if. Примерно так:

String name;

while (true) {
    System.out.print("Name?> ");
    name = input.nextLine();

    if (!name.trim().isEmpty()) {
        break;
    }

    System.out.println("%nError: field cannot be empty");
}

Вы также можете упростить свой код, превратив его в метод и вызывая его каждый раз, когда вам нужно значение от пользователя, вместо того, чтобы переписывать один и тот же код для каждого значения. Метод может выглядеть примерно так:

public static String getValueFromUser(String prompt) {
    String value;

    while (true) {
        System.out.print(prompt);
        value = input.nextLine();

        if (!value.trim().isEmpty()) {
            return value;
        }

        System.out.println("%nError: field cannot be empty");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...