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

什么情况下编译器会提示” java.util.NoSuchElementException“

什么情况下编译器会提示” java.util.NoSuchElementException“

未来开拓者 2016-04-30 18:22:32
package course;import java.io.*;import java.util.*;import java.util.Map.Entry;public class CreateStudent { private static int num; public Map<String,student> stud;  //Map<键,值>[这里的泛型建立了键和值的映射关系] a=new HashMap<键,值>(); public CreateStudent(int i){ this.stud=new HashMap<String,student>(); //建立hash表 if(confirm(i)){   num=i; create();  //如果通过验证程序则执行创建学生程序 } } private Boolean confirm(int u){  //验证程序,如果通过返回true,否则返回false try{ if(u<=0||u>=20) throw new IOException(); else  return true; }catch(IOException e){ System.out.println("输入的数据有误!"); e.printStackTrace(); return false; } } private void create(){ int i=0; while(i<num){ System.out.println("请输入学生id"); Scanner scan1=new Scanner(System.in); String str1=scan1.next(); if(stud.get(str1)==null){  //如果此学生id没有对应的学生对象则继续下面的步骤 System.out.println("请输入id="+str1+"的学生姓名"); String nam=scan1.next(); student stu=new student(nam,str1); stud.put(str1, stu); System.out.println("成功添加"+stu.id+stu.name); i++; } else{ System.out.println("该学生id已被占用"); continue; } if(i==num) scan1.close(); } } public void remove(){  Scanner scan2=new Scanner(System.in); while(true){ System.out.println("请输入要删除的学生的id"); String str3=scan2.next();//编译器提示此处有问题 if(stud.get(str3)==null){ System.out.println("此id尚未注册"); continue; } stud.remove(str3); scan2.close(); break; } } private void EntrySet(){ //通过entrySet返回Map中所有键值对。 Set<Entry<String,student>> Entryset=stud.entrySet();//Entry 为Map的一个内部类 for(Entry<String,student> a:Entryset){ System.out.println("取得键"+a.getKey()); System.out.println("值为"+a.getValue().name); } } public static void main(String[] args){ System.out.println("请输入想要创建的学生个数"); Scanner scan0=new Scanner(System.in); int h=scan0.nextInt(); CreateStudent stu0=new CreateStudent(h); scan0.close(); stu0.output(); stu0.remove(); stu0.EntrySet(); }如题,为什么系统会出现这种提示,这代码应该如何改进?求大神指教
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 1952 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信