输出结果全是id,不是name

来源:5-3 学生选课---删除 Map 中的学生

healer贤

2018-08-06 14:54

package com.xueshengguanli;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class MapTest {
    //用来承装学生类型对象
    public Map<String,Student> students;
    
    //在构造器中初始化students属性
    public MapTest() {
        this.students=new HashMap<String,Student>();
    }
    
    /**
     * 输入学生id,判断是否被占用,,
     * 若未被占用,则输入姓名,创建新学生对象,并且
     * 添加到students中
     * @param args
     * @return 
     */
     public void testPut() {
         Scanner in=new Scanner(System.in);
         int i=0;
         while(i<3) {
             System.out.println("请输入学生id");
             String id=in.next();
             //判断id是否被占用
             Student st=students.get(id);
             if(st==null) {
                 System.out.println("请输入学生姓名");
                 String name=in.next();
                 Student newStudent=new Student(id,name);
                 students.put(id, newStudent);
                 System.out.println("成功添加学生"+students.get(id).name);
                 i++;
             }else {
                 System.out.println("学生id已被占用");
                 continue;
             }
         }
     }
     
     /**
      * 测试map的keySet方法
      * 
      * @param args
      */
     public void testKeySet() {
         //通过keySet方法,返回Map中所有"键"的set集合
         Set<String> keySet=students.keySet();
         //取得students容量
         System.out.println("总共有"+students.size()+"个学生");
         //通过遍历keySet对象,来取得map中每一个键,再调用map的get方法取得每个键对应的value
         for(String stuid:keySet) {
             Student st=students.get(stuid);
             if(st!=null) {
                 System.out.println("学生:"+st.name);
             }
         }
     }
     
     public void testRemove() {
         Scanner in=new Scanner(System.in);
         while(true) {
             System.out.println("请输入要删除的学生id");
             String id=in.next();
             Student st=students.get(id);
             if(st==null) {
                 System.out.println("没有此人");
                 continue;
             }else {
                 students.remove(id);
                 System.out.println("学生"+st.name+"已经删除");
                 break;
             }
         }
     }
     
     public void testEntrySet() {
         Set<Entry<String,Student>> entrySet=students.entrySet();
         for(Entry<String,Student> entry:entrySet) {
             System.out.println("取得键"+entry.getKey());
             System.out.println("对应值为"+entry.getValue().name);
         }
     }
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    MapTest  mp=new MapTest();
    mp.testPut();
    mp.testKeySet();
    mp.testRemove();
    mp.testEntrySet();
    }

}

运行结果:请输入学生id
1
请输入学生姓名
we
成功添加学生1
请输入学生id
2
请输入学生姓名
rng
成功添加学生2
请输入学生id
3
请输入学生姓名
ig
成功添加学生3
总共有3个学生
学生:1
学生:2
学生:3
请输入要删除的学生id
2
学生2已经删除
取得键1
对应值为1
取得键3
对应值为3


写回答 关注

1回答

  • v右启
    2018-08-07 09:13:34
    已采纳

    查看Student类中  public Student(String id,String name) 是否正确

    是不是 String id和String name写反了

    泥丶黎

    能具体说明下写反了导致错误的原因吗?

    2018-08-16 10:52:38

    共 2 条回复 >

Java入门第三季

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

409768 学习 · 4463 问题

查看课程

相似问题