我试图在循环中使用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");
}
}
}
}
答案 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);