为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

0 回复 有任何疑惑可以回复我~
#1

qq_OK_21 提问者

但是我看老师运行的代码,结果是:(虽然我用的是for循环,老师用的是while,但我觉得是一样的,大佬求解) 请输入学生ID: 1 请输入学生姓名: Tom 成功添加学生:Tom 请输入学生ID: 1 该学生ID已被占用! 请输入学生ID: 2 请输入学生姓名: Jack 成功添加学生:Jack 请输入学生ID: 3 请输入学生姓名: ​xiao ming 成功添加学生:xiao ming
2018-01-10 回复 有任何疑惑可以回复我~
#2

qq_OK_21 提问者

非常感谢!
2018-01-10 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号