java - 使用扫描仪在while循环中重复条件为真的命令
问题描述
我如何获得下面的代码来重复命令,其中球员的名字已经存在于密钥集中?
public static Map<String, Player> players = new TreeMap<>();
for (int loop = 1; loop <= 4; loop++) {
System.out.println("enter player"+loop+"s name");
name = scanner.next();
if(players.keySet().contains(name)) {
System.out.println("name in use - enter new name");
}else {
players.put(name, new Player());
}
}
解决方案
您可以使用变量(例如boolean alreadyExists
,如下面的代码所示)来跟踪有效输入并在输入无效的情况下循环返回。
boolean alreadyExists;
for (int loop = 1; loop <= 4; loop++) {
do {
alreadyExists = false;
System.out.println("enter player" + loop + "s name");
name = scanner.next();
if (players.keySet().contains(name)) {
System.out.println("name in use - enter new name");
alreadyExists = true;
} else {
players.put(name, new Player());
}
} while (alreadyExists);
}
推荐阅读
- java - 在 Spring Batch 中,由于 SQL SERVER,处理时间很慢,即使它只在 application.yml 中定义
- firebase - Firebase Cloud Firestore 在 Flutter 中获取地图数组
- android - 手机 CPU 是否具有可以并行运行的独立整数和浮点计算单元?
- xml - 导出的 Excel 文件中的自定义样式
- node.js - Lodash - 通过值之间的最小差异进行过滤的最快方法
- excel - 将两个工作表中的数据与 vba 中的主键匹配(发生错误 91)
- python - 使用 Pylint 时出现无效语法错误,但代码运行良好
- azure - 尝试在 ARM 模板中添加 VNET 服务端点时出现问题
- python - 在 Mac 上无法关闭 Pygame 窗口问题
- javascript - 如果 var 已经存在,则需要 let