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

代码第101行中 continue 可以去掉吗?自己试了下,去掉结果也一样

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


正在回答

5 回答

可以去掉.

求采纳

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

qq_析木_0 提问者

非常感谢!
2017-02-18 回复 有任何疑惑可以回复我~
#2

songqi12so

那你第二次输入一个没有ID谁给你判断是否正确。如果进行下次的循环
2018-08-17 回复 有任何疑惑可以回复我~

额,看到这评论想补充下,其实这段的需求的目的是相对简单的所以去掉了不影响结果,只是单纯的做了个输入修改的判断,但是在复杂的业务中,用这个while(true)这种的死循环,严谨的逻辑其实是不能去掉的,因为你去掉了如果你if判断后还有逻辑就会执行下去(比如你在if后还有逻辑操作最后break不是在else中break),如果没有continue结束本次循环,逻辑就会继续往下走(直接break跳出循环),很容易造成错误,业务简单但是这里老师写的逻辑还是比较严谨的,初学最重要的是代码规范逻辑严谨,否则日后遍地踩坑啊~~~应该采纳我们这种善良详细的人,哈哈~~~

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

qq_析木_0 提问者

哈哈,感谢你善良详细的解答~~~手动点个赞!
2017-04-03 回复 有任何疑惑可以回复我~

没关系的,以下是运行结果

http://img1.sycdn.imooc.com//58a7ac6f000178dc02760224.jpg

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

不能去掉啊!

if(student==null){
                System.out.println("该ID不存在,请重新输入!");
                continue;

这个continue是用来跳转循环的。

你说你试了下删掉也可以正常运行,这句话半对半错,因为上面的if语句是用来判断输入的ID是否存在的,就可能会存在也可能不存在,你说的正常运行是所输入的ID是存在的。

if判断出来当输入的ID不存在的时候所以用continue来结束循环,并且返回去重新执行循环,也就是让你重新输入ID

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

songqi12so

说了半天没说在点子上,其实就是只能判断一次错误ID,不能进行下次的循环 这种错误答案都能采纳的提问者,你说这些怕是听不懂
2018-08-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

代码第101行中 continue 可以去掉吗?自己试了下,去掉结果也一样

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信