为什么输入最后显示学生都是ID号?

来源:5-2 学生选课---使用 Map 添加学生

qq_慕用719741

2019-04-24 10:00

https://img3.mukewang.com/5cbfc3130001b6f105790594.jpg最后都是ID号  不是学生名字?求解

写回答 关注

2回答

  • 慕粉7367658
    2019-08-23 19:12:22

    虽然有点晚   if判断条件错误

  • 剡苫
    2019-04-24 11:01:57

    你的代码跟老师讲的一样,

    你可以试试讲st.id也输出,看看是什么

    /**
     * 测试添加:输入学生Id,判断是否被占用
     * 若未被占用,则输入姓名,创建新学生对象,并且添加到students中
     */
    public void testPut(){
       //创建一个Scanner对象,用来获取输入的学生Id和姓名
        Scanner console = new Scanner(System.in);
        int i = 0;
        while (i < 3){
            System.out.println("请输入学生Id:");
            String ID = console.next();
            //判断该ID是否被占用
            Student st = students.get(ID);
            if (st == null){
                //提示输入学生姓名
                System.out.println("请输入学生姓名:");
                String name = console.next();
                //创建新的学生对象
                Student newStudent = new Student(ID,name);
                //通过调用students的put方法,添加ID-学生映射
                students.put(ID,newStudent);
                System.out.println("成功添加学生:" + students.get(ID).name);
                i++;
            }
            else {
                System.out.println("该学生ID已被占用!");
                continue;
            }
        }
    }
    
    /**
     * 测试Map的keySet方法
     */
    public void testKeySet(){
        //通过keySet方法,返回Map中的所有“键”的Set集合
        Set<String> keySet = students.keySet();
        //取得students的容量
        System.out.println("总共有:" + keySet.size() + "个学生");
        //遍历keySet,取得每一个键,再调用get方法取得每个键对应的value
        for (String stuId:keySet){
            Student st = students.get(stuId);
            if (st != null)
                System.out.println("学生:" + st.name);
        }
    }


Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题