將while循環(huán)改為for循環(huán)結(jié)果就出問(wèn)題了,輸出的結(jié)果若已添加ID 1的學(xué)生,再重復(fù)添加ID 1,則最后只能添加兩個(gè)學(xué)生就結(jié)束了
package com.dh.collection2;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
/** ?
?* Map(key(不可重復(fù))-value) ? 實(shí)現(xiàn)添加學(xué)生
?*
?*/
public class MapTest {
public Map<String,Student> students; ?//泛型,key是String,value是Student
public MapTest() { ?//構(gòu)造器初始化students
this.students=new HashMap<String,Student>();
}
/*
* put添加學(xué)生: 判斷學(xué)生ID是否被占用(避免重復(fù)添加),若未重復(fù)則輸入姓名,創(chuàng)建新學(xué)生對(duì)象,添加到students
*/
public void testPut() {
Scanner sc=new Scanner(System.in);
for(int i=0;i<3;i++) { ?//輸入三個(gè)學(xué)生
System.out.println("請(qǐng)輸入學(xué)生ID:");
String ID=sc.nextLine();
Student st=students.get(ID); ?//取得這個(gè)ID,比較輸入的ID,判斷是否重復(fù)
if(st==null) {
//提示輸入姓名
System.out.println("請(qǐng)輸入學(xué)生姓名:");
String name=sc.nextLine();
Student newStudent=new Student(ID,name);
students.put(ID, newStudent);
System.out.println("成功添加學(xué)生:"+students.get(ID).name);
}else {
System.out.println("該學(xué)生ID已被占用!");
continue;
}
}
}
/*
* 測(cè)試并利用keySet方法,返回Map中所有key的set集合
*/
public void testKeySet() {
Set<String> keySet=students.keySet();
System.out.println("共有"+students.size()+"個(gè)學(xué)生");
//遍歷keySet,取得每個(gè)key,再調(diào)用get取得對(duì)應(yīng)的value
for(String stuID:keySet) {
Student st=students.get(stuID);
if(st!=null) {
System.out.println("學(xué)生"+st.name);
}
}
}
public static void main(String[] args) {
MapTest mp=new MapTest();
mp.testPut();
mp.testKeySet();
}
}
2018-05-25
原先i++是寫(xiě)在if判斷語(yǔ)句的末尾,只在成功添加后i+1,現(xiàn)在for循環(huán)條件在if(){}else{}兩個(gè)條件任意之一執(zhí)行完都會(huì)i+1.
2018-08-09
可以把 i++單獨(dú)拿出來(lái)放到 if 里邊
2018-08-03
int i=0;
for(;i<3;) {
System.out.println("請(qǐng)輸入學(xué)生ID:");
String ID=console.next();
//判斷該ID是否被占用
Student st=students.get(ID);
if(st==null) {
System.out.println("請(qǐng)輸入學(xué)生姓名:");
String name=console.next();
//創(chuàng)建新的學(xué)生對(duì)象
Student newStudent=new Student(ID, name);
//通過(guò)調(diào)用student的put方法,添加ID-學(xué)生映射
students.put(ID, newStudent);
System.out.println("成功添加學(xué)生:"+students.get(ID).name);
? ?i++;
}else {
System.out.println("該學(xué)生ID已被占用");
continue;
}
}
可以這樣來(lái)