一个集合问题,纳闷。给100,并跪求答案。
一个最简单的学生管理程序。就是最后一个问题没弄出来,郁闷。要求是:
编写一个程序,用MAP实现学生成绩单的存储和查询,并且对成绩进行排序存储到TREESET中,求出平均成绩、最大值和最小值。
就只有求最大和最小值了。高手请看看吧。我是这样的,希望能够有耐心花1分种看看这段丑陋的代码:
package sameproblem;
import java.io.*;
//编写一个程序,用MAP实现学生成绩单的存储和查询,并且对成绩进行排序存储到TREESET中,求出平均成绩、最大值和最小值。
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeSet;
class Student{
String ID;
String Name;
double Grade;
public Student(String id, String name, int grade) {
ID = id;
Name = name;
Grade = grade;
}
public double getGrade() {
return Grade;
}
public void setGrade(int grade) {
Grade = grade;
}
public String getID() {
return ID;
}
public void setID(String id) {
ID = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String toString(){
return ID+" "+Name+" "+Grade;
}
void say(){
System.out.println(toString());
}
}
class MapAndTreeset {
Map con=new HashMap();
double num;
public char readCommand(){
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
char c=0;
try{
c=(char)br.read();
}catch(IOException ie){
System.exit(1);
}
//System.out.println(c);
return c;
}
void showMenu(){
System.out.println("请选择:");
System.out.println("。。。。。。。。。。。。1 添加学生信息");
System.out.println("。。。。。。。。。。。。2 学生信息列表");
System.out.println("。。。。。。。。。。。。3 查询学生信息");
System.out.println("。。。。。。。。。。。。4 所有学生平均成绩");
System.out.println("。。。。。。。。。。。。5 所有学生的最高成绩");
System.out.println("。。。。。。。。。。。。6 所有学生的最低成绩");
System.out.println("。。。。。。。。。。。。7 退出");
}
void newStudent() throws IOException{
Student astu=new Student(doID(),doName(),doInt());
con.put(astu.ID, astu);
}
void searchStudent() throws IOException{
System.out.println("请输入查询ID:");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String c=in.readLine();
Student d=(Student)con.get(c);
System.out.println(d);
//return c;
}
static String doID() throws IOException{
System.out.println("请输入ID:");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String s=in.readLine();
return s;
}
static String doName() throws IOException{
System.out.println("请输入名字:");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String s=in.readLine();
return s;
}
static int doInt() throws IOException{
System.out.println("请输入成绩:");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
int s=Integer.parseInt(in.readLine());
return s;
}
public void listStudents(){
System.out.println("ID "+"Name "+"Grade");
Collection emps=con.values();
Iterator it=emps.iterator();
while(it.hasNext()){
((Student)it.next()).say();
}
}
public void count(){
double sum=0;
Collection emps=con.values();
//TreeSet a=new Collection();
//TreeSet set=new TreeSet();
Iterator it=emps.iterator();
while(it.hasNext()){
for(int i=0;i<emps.size();i++){
sum=sum+((Student)it.next()).Grade;
}
num=sum/(double)emps.size();
//Student max=(Student) ((TreeSet) emps).first();
System.out.println("所有学生的平均成绩为: "+num);
//max.say();就是这些地方,不知道怎么放到TreeSet中取最大和最小值。唉~弄了好久了
//System.out.println(max.say());
}
}
public static void main(String args[]) throws IOException{
MapAndTreeset demo=new MapAndTreeset();
boolean flag=true;
while(flag){
demo.showMenu();
char c=demo.readCommand();
switch(c){
case '1':
demo.newStudent();
break;
case '2':
demo.listStudents();
break;
case '3':
demo.searchStudent();
break;
case '4':
demo.count();
case '5':
break;
case '6':
break;
case '7':
flag=false;
break;
default:
System.out.println("Command not found!Please choise again.");
}
}
}
}