qq_析木_0
2017-02-17 11:22
package com.imooc.Map; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.Set; import com.imooc.collection.Student; public class MapTest { public Map<String,Student>students; /* * 在构造器中初始化students属性 */ public MapTest(){ this.students=new HashMap(); } /* * 添加学生: * 首先检查是否被占用,如果被占用,输出提示信息 * 如若没有,将该学生信息输入到学生的属性中,并打印出学生信息 */ public void TestPut(){ int i=0; while(i<3){//此处用while循环更加合适!!! System.out.println("请输入学号:"); Scanner input=new Scanner(System.in); String id=input.next(); Student newStudent=students.get(id); if(newStudent==null){ System.out.println("请输入姓名:"); String name=input.next(); //创建学生对象 Student a=new Student(id,name); students.put(id, a); System.out.println("成功添加学生"+students.get(id).name); i++; }else{ System.out.println("您的id已被占用!"); continue; } } } public void testKeySet(){ //通过keySet方法,返回Map中的所有"键"的Set集合 Set<String> keySet=students.keySet(); //遍历keySet,取得每个key值,再调用get方法取得每个键对应的value for(String stuID:keySet){ Student st=students.get(stuID); System.out.println(st.name); } } /* * 删除Map中的映射 */ public void testRemove(){ System.out.println("请输入要删除的id:"); while(true){ Scanner input=new Scanner(System.in); String id=input.next(); Student st=students.get(id); if(st==null){ System.out.println("您输入的id不存在,请重新输入:"); continue; } students.remove(id); System.out.println("已经成功删除"+st.name); break; } } /* * 通过entrySet方法遍历Map */ public void testEntrySet(){ System.out.println("总共有"+students.size()+"个学生"); //通过entrySet方法返回所有的键值对 Set<Entry<String, Student>> entrySet=students.entrySet(); for(Entry es:entrySet){ System.out.println("key值:"+es.getKey()); System.out.println("Value值:"+es.getValue()); } } /* * 利用put方法修改Map中的已有映射 */ public void testModify(){ while(true){ System.out.println("请输入要修改的学生id:"); Scanner input=new Scanner(System.in); String ID=input.next(); Student nameNow=students.get(ID); if(nameNow==null){ System.out.println("你输入的ID不存在,请重新输入:"); continue; }else{ System.out.println("要修改的学生姓名为:"+nameNow.name); System.out.println("请输入新的学生名字:"); String nameNew=input.next(); Student st=new Student(ID,nameNew); students.put(ID, st); System.out.println("id为"+ID+"的学生姓名成功修改为"+nameNew); break; } } } public static void main(String[] args){ MapTest mt=new MapTest(); mt.TestPut(); mt.testKeySet(); mt.testRemove(); mt.testModify(); mt.testEntrySet(); } }
可以去掉.
求采纳
额,看到这评论想补充下,其实这段的需求的目的是相对简单的所以去掉了不影响结果,只是单纯的做了个输入修改的判断,但是在复杂的业务中,用这个while(true)这种的死循环,严谨的逻辑其实是不能去掉的,因为你去掉了如果你if判断后还有逻辑就会执行下去(比如你在if后还有逻辑操作最后break不是在else中break),如果没有continue结束本次循环,逻辑就会继续往下走(直接break跳出循环),很容易造成错误,业务简单但是这里老师写的逻辑还是比较严谨的,初学最重要的是代码规范逻辑严谨,否则日后遍地踩坑啊~~~应该采纳我们这种善良详细的人,哈哈~~~
没关系的,以下是运行结果
不能去掉啊!
if(student==null){
System.out.println("该ID不存在,请重新输入!");
continue;
这个continue是用来跳转循环的。
你说你试了下删掉也可以正常运行,这句话半对半错,因为上面的if语句是用来判断输入的ID是否存在的,就可能会存在也可能不存在,你说的正常运行是所输入的ID是存在的。
if判断出来当输入的ID不存在的时候所以用continue来结束循环,并且返回去重新执行循环,也就是让你重新输入ID
Java入门第三季
409792 学习 · 4340 问题
相似问题