我这段代码,为什么显示的序号而不是名字?


package com.imooc_collection;


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


public class MapTest {
 /**
  * 用来承装学生类型对象
  * @param args
  */
 public Map<String,Student>students;
 /**
  * 在构造器中初始化student属性
  * @param args
  */
 public MapTest(){
  this.students=new HashMap<String,Student>();
 }
 /**
  * 测试添加:输入学生ID,判断是否被占用
  * 若违背占用,则输入姓名,创建新学生对象,并且
  * 添加到student中
  * @param args
  */
 public void testPut(){
  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);
    //通过调用student的put方法,添加ID-学生映射
    students.put(ID,newStudent);
    System.out.println("成功添加学生:"+students.get(ID).name);
    i++;
   }else{
    System.out.println("该学生ID已被占用!");
    continue;
   }
  }
 }
 
 /**
  * 测试Map的KepSet方法
  * @param args
  */
 public void testKeySet(){
  //通过keySet方法,返回Map中的所有“键”的set集合
  Set<String>keySet=students.keySet();
  //取得students的容量
  System.out.println("总共有:"+students.size()+"个学生!");
  //遍历keySet,取得每一个键,再调用get方法取得每个键对应的value
  for(String stuId:keySet){
   Student st=students.get(stuId);
   if(st!=null){
    System.out.println("学生:"+st.name);
   }
  }
 }


 public static void main(String[] args) {
  // TODO Auto-generated method stub
  MapTest mt=new MapTest();
  mt.testPut();
  mt.testKeySet();
 }


}


一缕阳光1997
浏览 1189回答 2
2回答

大咪

在student的类里重写tostring方法。。把每个属性都加上就行eclipse里按alt+shift+s选择英文是generate toString
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java