/** 二、创建两名玩家
*玩家至少要有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貢獻(xiàn)35條經(jīng)驗(yàn) 獲得超18個(gè)贊
next()一定要讀取到有效字符后才可以結(jié)束輸入 對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結(jié)束符 next()方法會自動將其去掉 只有在輸入有效字符之后 next()方法才將其后輸入的空格鍵、Tab鍵或Enter鍵等視為分隔符或結(jié)束符 簡單地說 next()查找并返回來自此掃描器的下一個(gè)完整標(biāo)記 完整標(biāo)記的前后是與分隔模式匹配的輸入信息 所以next方法不能得到帶空格的字符串
而且 你還寫了nextInt()?而nextLine()方法的結(jié)束符只是Enter鍵 即nextLine()方法返回的是Enter鍵之前的所有字符 它是可以得到帶空格的字符串的?意思就是說 nextInt()讀到有效值后就結(jié)束 輸完數(shù)字后按的回車符還存在 nextLine()讀取到回車符就直接結(jié)束 所以結(jié)果就類似于跳過了該條輸入語句
總結(jié)一下就是 input.next()就是接收鍵盤輸入的數(shù)據(jù)?用空格隔開的下一個(gè)字符串
希望對你有所幫助
添加回答
舉報(bào)
0/150
提交
取消