当前位置: 代码迷 >> J2SE >> 一个关于TreeMap的有关问题
  详细解决方案

一个关于TreeMap的有关问题

热度:58   发布时间:2016-04-23 20:23:53.0
【求助】一个关于TreeMap的问题
package exercise;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.TreeMap;
//import java.util.Scanner;

/**单个学生成绩
 * @author PC-100
 *
 */
class GradeList implements Comparable{
//
private String name;
private String grade; 
private int score;
//
public GradeList(){}
public GradeList(String name,int score){
this.name=name;
this.score=score;
}
//name的setter方法
public void setName(String name){
this.name=name;
}
//score的setter方法
public void setScore(int score){
this.score=score;
}
//name的getter方法
public String getName(){
return this.name;
}
//score的getter方法
public int getScore(){
return this.score;
}
//grade的getter方法
public String getGrade(){
if(this.score<=100&this.score>=85){
return "优秀";
}
else if(this.score>=75){
return "良好";
}
else if(this.score>=65){
return "中等";
}
else if(this.score>=60){
return "及格";
}
else{
return "差";
}

}
public String toString(){
return "姓名:"+this.name+" "+"成绩"+this.score+" ";
}
//重写equals方法
@Override
public boolean equals(Object obj){

System.out.println("=================");
if(obj==this)
return true;
if(obj!=null&&obj.getClass()==GradeList.class){
GradeList gl=(GradeList)obj;
return this.name==gl.getName();
}
return false;
}
//重写hashCode方法
@Override
public int hashCode(){
System.out.println("================");
return 80;
}

@Override
public int compareTo(Object arg0) {
// TODO Auto-generated method stub
GradeList gl=(GradeList)arg0;
return this.score>gl.score?-1:this.score<gl.score?1:0;
}

}
/**
 * @author PC-100
 *
 */
public class TreeMapExercise {
static Map gradeMap=new TreeMap();
public static void main(String[] args) {
//获取键盘输入
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String inputStr=null;
String name="";
int score=0;
test:
while(inputStr!="#"){

System.out.println("请输入学生姓名及成绩,以逗号分隔:");
try {
inputStr=br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(inputStr.equals("#")){
break;
}
if(inputStr.length()!=0){//null ""
String[] posStrArr=inputStr.split(",");
name=posStrArr[0];
score=Integer.parseInt(posStrArr[1]);
}
if(score>100||score<0){
System.out.println("分数不符合要求");
continue test;
}
/*if(name=="#"){
break test;
}*/
//创建一条学生成绩记录
GradeList student=new GradeList(name,score);
//添加一条学生记录到成绩单
gradeMap.put(student,student.getGrade());

}
if(!gradeMap.isEmpty()){
System.out.println(gradeMap);
}
}

}

下面是程序运行结果
请输入学生姓名及成绩,以逗号分隔:
we,90
请输入学生姓名及成绩,以逗号分隔:
we,90
请输入学生姓名及成绩,以逗号分隔:
we,80
请输入学生姓名及成绩,以逗号分隔:
#
{姓名:we 成绩90 =优秀, 姓名:we 成绩80 =良好}
我想让相同名字的不重复,但是又不知道我的equals和hashCode方法有什么问题
------解决方案--------------------
1.你的equal使用Equal代替==
------解决方案--------------------

是你要的结果吗?
  相关解决方案