循环异常处理

时间:2019-06-20 17:50:04

标签: java loops exception

我试图在循环中使用try-catch语句,以便要求用户输入正确的值,直到完成为止。我目前正在while(true)循环中进行此操作,但是我们的讲师既不鼓励也不限制这样做。有人可以告诉我另一种使用示例代码的方法吗?

我知道这不是最有效的方法。但是到目前为止,这是我的问题。任何帮助将不胜感激

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 :(得分:0)

基本上,您将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);