为什么无法输入名字,只能输出序号!

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

一缕阳光1997

2016-10-09 00:07

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();
 }

}


写回答 关注

2回答

  • qq_頖縌乖乄絯_04017281
    2016-10-16 15:42:19

    你的代码没问题,我运行了的,可以输出啊

  • 一缕阳光1997
    2016-10-09 00:07:26

    发斯蒂芬

Java入门第三季

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

409768 学习 · 4463 问题

查看课程

相似问题