package imoocCollection; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.Set; public class MapTest { //建一个map类型的属性,用来承装student对象的 public Map<String, Student> students; //在构造方法上给students初始化 public MapTest() { this.students = new HashMap<String, Student>(); } //测试添加方法:输入学生的ID,判断是否被占用 //若未被占用,提示输入学生姓名,创建新的学生对象,并且添加到students中 //若被占用,打印输出,该ID已被占用 public void testPut() { //创建一个Scanner对象 Scanner sc = new Scanner(System.in); for(int i=0; i<3; i++) { System.out.println("请输入学生ID:"); String id = sc.next(); //判断该ID是否被占用 Student s = students.get(id); if(s == null) { //提示输入学生姓名 System.out.println("请输入学生姓名:"); String name = sc.next(); //创建新的学生对象 Student st = new Student(id, name); //通过调用students的put方法添加学生到hash map里 students.put(id, st); System.out.println("成功添加学生:" + students.get(id).name); } else { System.out.println("该学生ID已被占用"); continue; } } } //测试map的keySet()方法 public void testKeySet() { //通过keySet方法返回Map中所有键的Set集合 Set<String> keySet = students.keySet(); //取得set的容量 System.out.println("总共有:" + keySet.size() + "个学生!"); //遍历keySet,取得每一个键,在调用map的get方法取得每个键对应的value for(String s : keySet) { Student st = students.get(s); 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(); } }
就是三次,i=0、1、2
老师的i++可以控制在if后面,跟后面else无关呀,打个比方从第二次开始输,若一直重复可以输无数次,你这样写,如果输入重复的也算了
for循环是可以用,但你这样写,只能输入三次,无论id是否重复。
如果你把i++放入if里面,只要id重复,就能输入多次,直到你正确输入三个不重复的id为止。