为什么第二个玩家的名称会把第一个玩家的名称覆盖

来源:7-1 简易扑克牌游戏

慕容6209797

2019-07-25 17:02

//创建玩家
public void creatPlayer(){
    System.out.println("-----------开始创建玩家-------------");
    Player newplayer = new Player();
    for(int i= 1 ;i<3 ; i++) {
        System.out.println("请输入第" + i + "位玩家的ID和姓名");
        while (true) {
            try {
                System.out.println("输入ID");
                int id = console.nextInt();
                for (Player player : playerList) {
                    if (player.getId()==(id)) {
                        System.out.println("该ID已被占用,请重新输入");
                        throw new Exception();
                    }
                }
                newplayer.setId(id);
                break;
            } catch (InputMismatchException e) {
                console.next();
                System.out.println("输入错误,请重新输入");
            } catch (Exception e) {
                continue;
            }
        }
        System.out.println("请输入姓名");
        String name = console.next();
        newplayer.setName(name);
        playerList.add(newplayer);
        //i++;
    }
    for(int j =0 ; j<playerList.size();j++){
        System.out.println("欢迎玩家" + playerList.get(j).getName());
    }
}


写回答 关注

2回答

  • 慕尼黑1044564
    2019-08-04 14:56:12
    已采纳

    出现覆盖 说明你的List创建的位置不对 查看一下是否是List随着你的for循环而重新实例化了

  • 慕容0056306
    2019-08-07 11:40:21

    你要new两次player,你new一次就只有个一个对象,你一直在给同一个对象赋值当然会覆盖

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题