Циклическая обработка исключений - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь использовать операторы try-catch внутри цикла, чтобы пользователю было предложено ввести правильные значения, пока это не будет сделано.В настоящее время я делаю это в течение некоторого (истинного) цикла, но это было обескуражено и ограничено нашими лекторами.Может ли кто-нибудь сказать мне другой способ сделать это с помощью образца кода?

Я знаю, что это не самый эффективный способ сделать это.Но на данный момент это моя проблема.Любая помощь будет оценена

class Players {
    private static Map<String, Integer> golferInfo = new LinkedHashMap<>(Main.playCount);
    static Scanner uInput = new Scanner(System.in);

    static void addPlayers(String player) {
        String newPlayer = player;

        while (true) {
            try {
                if (!golferInfo.containsKey(newPlayer)) {
                    golferInfo.putIfAbsent(newPlayer, 0);
                    break;
                } else {
                    System.out.println("Name currently exists please enter a new name");
                    newPlayer = uInput.next();
                }
            } catch (InputMismatchException e) {
                System.out.println("Please enter an appropriate name");
            }
        }
    }
}

1 Ответ

0 голосов
/ 20 июня 2019

По сути, вы используете оператор if в качестве инварианта цикла вместо самого условия цикла. Чтобы компенсировать это, вы можете инвертировать логику вашего оператора if, сохраняя сканирование внутри цикла с помощью try/catch и помещая newPlayer в список после цикла после успешного сканирования. Таким образом, я думаю, что вы могли бы просто получить что-то вроде следующего кода:

while (golferInfo.containsKey(newPlayer)) {
    System.out.println("Name currently exists please enter a new name");
    try {
        newPlayer = uInput.next();
    } catch (InputMismatchException e) {
        System.out.println("Please enter an appropriate name");
    }
}
golferInfo.putIfAbsent(newPlayer, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...