请大家帮忙, 程序出现ClassCastException

Zenki 2005-01-09 10:50:15
public class Staff{
private String staffID;
private String StaffName;
private double salary;

public Staff(String StaffID,String Name, double Salary){
this.staffID = StaffID;
this.StaffName = Name;
this.salary = Salary;

System.out.println("Class Staff has been created.");

}

public String getStaffID() {
return this.staffID;
}

public String getStaffName() {
return this.StaffName;
}

public double getSalary() {
return this.salary;
}

public String toString() {
return ("Staff ID: " + getStaffID() + ", Name: " + getStaffName() + ", Salary: " + String.valueOf(getSalary()));
}
}

////////////////////////////////////////////////////////////////////////////////////////
import java.util.*;

public class Company{
private Map staffMap = new HashMap();

public void addStaff(Staff oneStaff){

staffMap.put(oneStaff.getStaffID(),oneStaff.toString());
}

public void showStaff(){

Iterator iterator = staffMap.keySet().iterator();
while (iterator.hasNext()){
System.out.println(staffMap.get(iterator.next()));
}

}

public Set nameSet(){
Set set = new HashSet();


Iterator iterator = staffMap.keySet().iterator();


while (iterator.hasNext()){
set.add(((Staff) staffMap.get(iterator.next())).getStaffName());//问题出现在此

}
return set;
}

}
///////////////////////////////////////////////////////////////////////////////////////
public class TestCompany{
public static void main(String args[]){
Company smallCompany = new Company();

Staff StaffOne = new Staff("A007","James",10001.0);
Staff StaffTwo = new Staff("A009","James",999.0);
Staff StaffThree = new Staff("A012","Moon",5000.0);

smallCompany.addStaff(StaffOne);
smallCompany.addStaff(StaffTwo);
smallCompany.addStaff(StaffThree);
smallCompany.showStaff();

System.out.println(smallCompany.nameSet().toString()); //问题出现在此

}
}
////////////////////////////////////////////////////////////////////////////////////////
问题输出:

Exception in thread "main" java.lang.ClassCastException:java.lang.String
at Company.nameSet()(company.java:80)
at TestCompany.main(TestCompany.java:20)
////////////////////////////////////////////////////////////////////////////////////////
请问如何改正错误 ?? 在此谢过半!!
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JAVA_3 2005-01-10
  • 打赏
  • 举报
回复
I don't know.
classjava 2005-01-10
  • 打赏
  • 举报
回复
原因是所有类都继承了Object的toString()方法
Zenki 2005-01-09
  • 打赏
  • 举报
回复
果然是staffMap.put(oneStaff.getStaffID(),oneStaff.toString());出问题
现在OK啦..........不过为何省掉了toString()而又有我想要的结果??
dawnwang 2005-01-09
  • 打赏
  • 举报
回复
同意
wts 2005-01-09
  • 打赏
  • 举报
回复
你既然知道在哪个位置出错,问题就很好解决了。
根据经验来看,ClassCastException这样的异常,是在你强制对对象进行类型转化的时候产生的,并且你可以从你的代码运行跟踪到,正好是你进行强制转化的地方。
这么说,你能明白了吧?
longjing_g 2005-01-09
  • 打赏
  • 举报
回复
楼上说得对
vgvg 2005-01-09
  • 打赏
  • 举报
回复
staffMap.put(oneStaff.getStaffID(),oneStaff.toString());
是你这句的问题,改成
staffMap.put(oneStaff.getStaffID(),oneStaff);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧