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();
}
如题,为什么系统会出现这种提示,这代码应该如何改进?求大神指教
相关分类