慕妹3017280
2017-09-22 19:51
我这个在eclipse在中写完了没有报错但是运行不了
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Maptest {
//创建一个Map来承装学生对象·
public Map<String,XueSheng>students;
//在构造方法中对students初始化
public void TestMap() {
this.students=new HashMap<String,XueSheng>();
}
//测试添加:输入学生ID,判断是否被占用
//若被占用则输入学生姓名,创建新的学生对象,并添加到students中去
public void testPut() {
//创建一个Scanner学生对象,用来获取输入的学生ID和name;
Scanner in=new Scanner(System.in);
String ID=in.next();
int i=0;
while(i<3) {
System.out.println("请输入学生ID");
String suID=in.next();
//判断ID是否被占用
XueSheng sc=students.get(suID);
if(sc==null) {
System.out.println("请输入学生姓名:");
String name=in.next();
//创建新的学生对象
XueSheng newstudten=new XueSheng(ID,name);
//调用students的put方法来,添加ID,映射学生
students.put(ID, newstudten);
System.out.println("成功添加学生"+students.get(ID).name);
i++;
}else {
System.out.println("该学生ID已经被占用");
continue;
}
break;
}
}
//测试Map中的KeySet的方法
public void testKeySet() {
//通过KeySet方法,返回所以"键"的集合
Set<String>keSet=students.keySet();
//取得students中的容量
System.out.println("共添加了"+students.size()+"个学生!");
//通过遍历KeySet,取得每一个键,并且在调用get方法取得每个对应键的value
for (String suTD : keSet) {
XueSheng sc=students.get(suTD);
if(sc!=null) {
System.out.println("学生姓名"+sc.name);
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Maptest ys=new Maptest();
ys.TestMap();
ys.testPut();
ys.testKeySet();
}
}
你的代码写错了,ID没有用!suID是键盘输入的,你的代码中的这些
XueSheng newstudten=new XueSheng(ID,name);
//调用students的put方法来,添加ID,映射学生
students.put(ID, newstudten);
System.out.println("成功添加学生"+students.get(ID).name);
标记加粗的ID 应该用suID 来代替
19行和23行怎么又是ID又是suID的
public static void main(String[] args) {
// TODO Auto-generated method stub
TestMap();
testPut();
testKeySet();
}
去掉Maptest ys=new Maptest();
Java入门第三季
409792 学习 · 4340 问题
相似问题