? 為什么我打印出來的順序是一樣的????
請輸入學生ID: 1 請輸入學生姓名: Tom 成功添加學生:Tom 請輸入學生ID: 1 該學生id已存在! 請輸入學生ID: 2 請輸入學生姓名: Jack 成功添加學生:Jack 請輸入學生ID: 3 請輸入學生姓名: xiaoming 成功添加學生:xiaoming 總共有:3個學生 學生:Tom 學生:Jack 學生:xiaoming?
請輸入學生ID: 1 請輸入學生姓名: Tom 成功添加學生:Tom 請輸入學生ID: 1 該學生id已存在! 請輸入學生ID: 2 請輸入學生姓名: Jack 成功添加學生:Jack 請輸入學生ID: 3 請輸入學生姓名: xiaoming 成功添加學生:xiaoming 總共有:3個學生 學生:Tom 學生:Jack 學生:xiaoming?
2017-11-16
舉報
2017-11-30
你把while(i<3)里的數(shù)字3改大一點然后在執(zhí)行程序輸出看看就不一定了。
2017-11-17
public Map<String,Student> students;
public MapTest() {
// TODO Auto-generated constructor stub
students = new HashMap<>();
}
/**
* 添加,輸入學生id,判斷是否存在
* 若不存在,則輸入姓名,創(chuàng)建新學生對象,并添加進去
* @param args
*/
public void testPut(){
//創(chuàng)建一個Scanner對象,用來獲取輸入的學生ID和姓名
Scanner scanner = new Scanner(System.in);
int i = 0;
while(i<3){
System.out.println("請輸入學生ID:");
String id = scanner.next();
//判斷該ID是否已存在
Student st = students.get(id);
if(st == null){
//為空不存在該ID的學生信息,輸入學生姓名,創(chuàng)建一個新的學生對象,添加到map
System.out.println("請輸入學生姓名:");
String name = scanner.next();
//創(chuàng)建學生實例
Student newStudent = new Student();
newStudent.setId(id);
newStudent.setName(name);
students.put(id, newStudent);
System.out.println("成功添加學生:"+students.get(id).getName());
i++;
}else{
System.out.println("該學生id已存在!");
continue;
}
}
}
/**
* 測試Map的keyset方法
* @param args
*/
public void testKeySet(){
//通過keyset方法,返回map中所有鍵的值
Set<String> keyset = students.keySet();
System.out.println("總共有:"+students.size()+"個學生");
//遍歷keyset,取得每個key的值,再調(diào)用get方法取得key對應的value
for (String string : keyset) {
Student stu = students.get(string);
if(stu!=null){
System.out.println("學生:"+stu.getName());
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MapTest test = new MapTest();
test.testPut();
test.testKeySet();
}
2017-11-16
代碼貼出來