/** 二、创建两名玩家
*玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合
*/
public void addPlayers(){
System.out.println("-------------创建玩家-----------------");
int i = 1;
while(true){
System.out.println("请输入第"+i+"位玩家的ID和姓名:");
try {
System.out.println("输入ID:");
int id = input.nextInt();
Players pl = players.get(id);
if( pl == null){
System.out.println("输入姓名:");
String name = input.next();
Players player = new Players(id,name);
players.put(id, player);
System.out.println("成功添加玩家:"+players.get(id).name+"\n");
i++;
}
else{
System.out.println("该ID以已被占用!");
continue;
}
if(i > 2)
break;
} catch (InputMismatchException e) {
System.out.println("请输入整数类型的ID!");
input.next();//这句话是什么意思呢
continue;
}
}
System.out.println("---------------玩家创建完成----------------");
Set<Integer> keySet = players.keySet();
for (Integer integer : keySet) {
System.out.println(" ---------欢迎玩家:"+players.get(integer).name+"----------");
}
System.out.println();
3 回答
末日泣歌
TA贡献35条经验 获得超18个赞
next()一定要读取到有效字符后才可以结束输入 对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符 next()方法会自动将其去掉 只有在输入有效字符之后 next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符 简单地说 next()查找并返回来自此扫描器的下一个完整标记 完整标记的前后是与分隔模式匹配的输入信息 所以next方法不能得到带空格的字符串
而且 你还写了nextInt() 而nextLine()方法的结束符只是Enter键 即nextLine()方法返回的是Enter键之前的所有字符 它是可以得到带空格的字符串的 意思就是说 nextInt()读到有效值后就结束 输完数字后按的回车符还存在 nextLine()读取到回车符就直接结束 所以结果就类似于跳过了该条输入语句
总结一下就是 input.next()就是接收键盘输入的数据 用空格隔开的下一个字符串
希望对你有所帮助
添加回答
举报
0/150
提交
取消