问答详情
源自:5-2 学生选课---使用 Map 添加学生

来个大神帮我解决一下

我这个在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();


}


}


提问者:慕妹3017280 2017-09-22 19:51

个回答

  • qq_很2很温柔_0
    2017-10-18 10:22:06

    你的代码写错了,ID没有用!suID是键盘输入的,你的代码中的这些

    XueSheng newstudten=new XueSheng(ID,name);

    //调用students的put方法来,添加ID,映射学生

    students.put(ID, newstudten);

    System.out.println("成功添加学生"+students.get(ID).name);

    标记加粗的ID 应该用suID 来代替


  • 容错率
    2017-09-26 16:02:33

    19行和23行怎么又是ID又是suID的

  • 唯有遇见清
    2017-09-23 15:01:05

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    TestMap();

    testPut();

    testKeySet();

    }

    去掉Maptest ys=new Maptest();