黑马程序员技术交流社区
标题:
请大家看一下这个程序有什么毛病
[打印本页]
作者:
IT人
时间:
2013-12-25 21:29
标题:
请大家看一下这个程序有什么毛病
package com.itheima;
import java.util.Iterator;
import java.util.TreeSet;
public class Test10 {
public static void main(String[] args)throws NullPointerException{
// TODO Auto-generated method stub
TreeSet<Student> ts = new TreeSet<Student>();
ts.add(new Test10().new Student("wangwu01", 60.5, 23 ));
ts.add(new Test10().new Student("lisi06",90.3, 21));
ts.add(new Test10().new Student("zhangsan01", 56.5, 21));
ts.add(new Test10().new Student("zhangsan04", 80.5, 20));
ts.add(new Test10().new Student("wangwu05", 70.5, 19));
Iterator<Student> it = ts.iterator();
while(it.hasNext()){
Student s = (Student)it.next();
System.out.println("学生:"+s.getName()+"成绩:"+s.getScore()+"年龄:"+s.getage());
}
}
class Student implements Comparable<Object>
{
//定义学生具备的三个属性:姓名,分数和年龄
private String name;
private float score;
private int age;
//初始化学生的属性
Student(String name,float score,int age){
this.name = name;
this.score = score;
this.age = age;
}
public Student(String name2, double d, int age2) {
// TODO Auto-generated constructor stub
}
//实现Comparable接口的方法compareTo
@Override
public int compareTo(Object obj) {
// TODO Auto-generated method stub
//根据需求根据学生的成绩进行排序
//判断传入的对象是否Student对象
if(!(obj instanceof Student))
//如果不是学生对象就抛出异常
throw new RuntimeException("非学生");
//对传入的对象就行强转
Student stu = (Student)obj;
//比较两个学生的成绩大小如果相同,在调用字符串的compareTo方法进行排序
if(this.score == stu.score){
return this.name.compareTo(stu.name);
}
//分数如果不同,那就分数进行排序
if(this.score > stu.score){
return 1;
}
return -1;
}
//对外提供获得age属性的方法
public int getage(){
return age;
}
//对外提供获得name的方法
public String getName(){
return name;
}
//对外提供获得score的方法
public float getScore(){
return score;
}
}
}
下边是eclipse的提示:Exception in thread "main" java.lang.NullPointerException
at com.itheima.Test10$Student.compareTo(Test10.java:55)
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at com.itheima.Test10.main(Test10.java:10)
作者:
小骗子
时间:
2013-12-25 22:11
本帖最后由 小骗子 于 2013-12-25 22:18 编辑
//初始化学生的属性
Student(String name,float score,int age){
}
//启动这个方法,貌似有小数点就默认是double类型了,上面那个方法根本就没用到
public Student(String name, double d, int age2) {
// TODO Auto-generated constructor stub
this.name = name;
this.score = d;
this.age = age2;
}
结果:
学生:zhangsan01成绩:56.5年龄:21
学生:wangwu01成绩:60.5年龄:23
学生:wangwu05成绩:70.5年龄:19
学生:zhangsan04成绩:80.5年龄:20
学生:lisi06成绩:90.3年龄:21
作者:
IT人
时间:
2013-12-26 09:44
通过了!谢谢了!我还想我问一句,float的不行么。为啥???学生成绩是float也行呀啊!是不是eclipse的事??麻烦解答一下
作者:
Kyle
时间:
2013-12-26 13:57
IT人 发表于 2013-12-26 09:44
通过了!谢谢了!我还想我问一句,float的不行么。为啥???学生成绩是float也行呀啊!是不是eclipse的事 ...
存放float值的时候要加f。
如:
float f = 0.02f;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2