大佬求解,为啥我的代码输入三次跳出循环,但是老师的输入了四次,而且我觉得三次是对的呀?

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

qq_OK_21

2018-01-10 12:39

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

}


写回答 关注

3回答

  • 番禺yu
    2018-01-10 14:39:46
    已采纳

    就是三次,i=0、1、2

    qq_OK_...

    非常感谢!

    2018-01-10 19:21:43

    共 2 条回复 >

  • 慕哥5034676
    2018-01-15 22:34:09

    老师的i++可以控制在if后面,跟后面else无关呀,打个比方从第二次开始输,若一直重复可以输无数次,你这样写,如果输入重复的也算了

  • love_kim3176858
    2018-01-14 18:02:07

    for循环是可以用,但你这样写,只能输入三次,无论id是否重复。

    如果你把i++放入if里面,只要id重复,就能输入多次,直到你正确输入三个不重复的id为止。

Java入门第三季

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

409764 学习 · 4543 问题

查看课程

相似问题