首先贴出我的代码,这个程序主要是实现员工的增删改查,但是其中一部分功能没有实现,一些是空的构造方法
Menu菜单类
package com.gem.homework;
import java.util.Iterator;
import java.util.TreeSet;
public class Menu{
TreeSet t = new TreeSet();
public Menu() {
Employee employee01 = new Employee(001, "张3", 15, "宣传部");
Employee employee02 = new Employee(002, "张4", 16, "心理部");
Employee employee03 = new Employee(003, "张5", 17, "办公室");
Employee employee04 = new Employee(004, "张6", 18, "体育部");
Employee employee05 = new Employee(005, "张7", 19, "网宣部");
Employee employee06 = new Employee(005, "张7", 19, "铁道部");
t.add(employee06);
t.add(employee05);
t.add(employee04);
t.add(employee03);
t.add(employee02);
t.add(employee01);
}
public void printMenu() {
// TODO Auto-generated method stub
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.退出系统 ---");
}
public void checkInfos() {
// TODO Auto-generated method stub
Iterator iter = t.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
public void lookInfos() {
// TODO Auto-generated method stub
}
public void addEmployee() {
// TODO Auto-generated method stub
}
public void reviseEmployee() {
// TODO Auto-generated method stub
}
public void delEmployee() {
// TODO Auto-generated method stub
}
public boolean exitSystem() {
// TODO Auto-generated method stub
return false;
}
}
Employee员工类
package com.gem.homework;
public class Employee {
private int eId;
private String ename;
private int age;
private String department;
public int geteId() {
return eId;
}
public void seteId(int eId) {
this.eId = eId;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public Employee(int eId, String ename, int age, String department) {
this.eId = eId;
this.ename = ename;
this.age = age;
this.department = department;
}
@Override
public String toString() {
return "Employee [eId=" + eId + ", ename=" + ename + ", age=" + age
+ ", department=" + department + "]";
}
}
Test测试类
package com.gem.homework;
import java.util.Scanner;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入相应的数字进行功能操作");
Menu m = new Menu();
boolean flag = true;
while (flag) {
m.printMenu();
int input = sc.nextInt();
switch (input) {
case 1:
m.checkInfos();
break;
case 2:
m.lookInfos();
break;
case 3:
m.addEmployee();
break;
case 4:
m.reviseEmployee();
break;
case 5:
m.delEmployee();
break;
case 6:
flag = m.exitSystem();
break;
default:
System.out.println("输入有误");
break;
}
}
}
}
当这个程序运行时,会出现这个错误:
Exception in thread "main" java.lang.ClassCastException: com.gem.homework.Employee cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at com.gem.homework.Menu.<init>(Menu.java:16)
at com.gem.homework.Test.main(Test.java:14)
我找了好半天没有找到错误的原因所在,于是我就去百度,查找相关的视频,但是都没有找到结果,但是在我翻书的过程种突然想到Employee员工类中还没有写实现TreeSet的比较方法,于是我就在Employee中添加了这样的一段代码:
其中的原因是父类转换到子类时会发生ClassCastException异常,没有重写compareTo的方法,添加上之后就不会出现程序运行错误。