为什么case :6比较时会报错?

浪奔的小三爷 2021-05-07 06:13:10
package test3;

public class Employee implements Comparable<Employee>{
private int ID;private String name;private char sex;
private int age; private int salary;
public Employee(int ID,String name,char sex,int age,int salary) {
this.ID = ID;
this.name = name;
this.sex = sex;
this.age = age;
this.salary = salary;
}
public int getID() {
return ID;
}
public String getName() {
return name;
}
public char getSex() {
return sex;
}
public int getAge() {
return age;
}
public int getSalary() {
return salary;
}
public String toString() {
return ID+","+name+","+sex+","+age+","+salary;
}
@Override
public int compareTo(Employee o) {
if(this.salary>o.salary) {
return 1;
}else if(this.salary<o.salary) {
return -1;
}
return 0;
}
}


package test3;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

public class ExampleMap {
HashMap<Integer,Employee> hmap = new HashMap();
public void addEmployee(Employee e) {
hmap.put(e.getID(), e);
}
public String getEmployee(int id) {
Employee e = null;
for(Integer key:hmap.keySet()) {
if(key==id) {
e = hmap.get(key);
}
}
return e.toString();
}
public void deleteEmployee(int id) {
for(Integer key:hmap.keySet()) {
if(key==id) {
hmap.remove(key);
}
}
}
public void updateEmployee(Employee e) {
for(Integer key:hmap.keySet()) {
if(key==e.getID()) {
hmap.put(key,e);
}
}
}
public void showAllEmployee() {
for(Integer key:hmap.keySet()) {
System.out.println(hmap.get(key).toString());
}
}
public void sortBySalary() {
List list = new ArrayList(hmap.entrySet());
Collections.sort(list);
for(Integer key:hmap.keySet()) {
System.out.println(hmap.get(key).toString());
}
}
}



package test3;

import java.util.Scanner;
public class test {
public static void main(String[] args) {
ExampleMap em = new ExampleMap();
while(true) {
System.out.println("******雇员管理系统******");
System.out.println("1.添加雇员");
System.out.println("2.显示所有雇员信息");
System.out.println("3.根据雇员ID号查找雇员");
System.out.println("4.修改雇员信息");
System.out.println("5.根据雇员id号删除雇员");
System.out.println("6.按薪水排序");
System.out.println("7.退出");
System.out.println("********************");
System.out.println("请输入编号:");
Scanner sc = new Scanner(System.in);
int bh = sc.nextInt();
switch(bh) {
case 1:
System.out.println("您选择了添加雇员");
System.out.println("请输入id号:");
int ID = sc.nextInt();
System.out.println("请输入姓名:");
String name = sc.next();
System.out.println("请输入性别:");
char sex = sc.next().charAt(0);
System.out.println("请输入年龄:");
int age = sc.nextInt();
System.out.println("请输入薪水:");
int salary = sc.nextInt();
Employee e = new Employee(ID,name,sex,age,salary);
em.addEmployee(e);
break;
case 2:
System.out.println("您选择了显示所有雇员信息");
em.showAllEmployee();
break;
case 3:
System.out.println("你选择了根据雇员ID查找雇员");
System.out.println("请输入您要查找的id号:");
ID = sc.nextInt();
em.getEmployee(ID);
break;
case 4:
System.out.println("请输入雇员信息:");
System.out.println("请输入id号:");
ID = sc.nextInt();
System.out.println("请输入姓名:");
name = sc.nextLine();
System.out.println("请输入性别:");
sex = sc.next().charAt(0);
System.out.println("请输入年龄:");
age = sc.nextInt();
System.out.println("请输入薪水:");
salary = sc.nextInt();
e = new Employee(ID,name,sex,age,salary);
em.updateEmployee(e);
break;
case 5:
System.out.println("请输入您要删除的id号:");
ID = sc.nextInt();
em.deleteEmployee(ID);
break;
case 6:
em.sortBySalary();
case 7:
return;
}
}
}
}
...全文
175 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
浪奔的小三爷 2021-05-08
  • 打赏
  • 举报
回复
Gemini_Kanon 2021-05-08
  • 打赏
  • 举报
回复
贴下报错信息撒
一般的俗 2021-05-08
  • 打赏
  • 举报
回复
引用 6 楼 PNZ.BeijingL 的回复:
我觉得修改方式应该是 List list = new ArrayList(hmap.entrySet()) //hmap.entrySet()返回的是Set<Map.Entry<Integer, Employee>> 不能比较 修改成 List list = new ArrayList(hmap.values()); //hmap.values() 返回的是值集合Collection
哈哈哈,大兄弟说的对,没仔细看
=PNZ=BeijingL 2021-05-08
  • 打赏
  • 举报
回复
我觉得修改方式应该是

List list = new ArrayList(hmap.entrySet()) //hmap.entrySet()返回的是Set<Map.Entry<Integer, Employee>> 不能比较
修改成 List list = new ArrayList(hmap.values()); //hmap.values() 返回的是值集合Collection
=PNZ=BeijingL 2021-05-08
  • 打赏
  • 举报
回复
sortBySalary() 里面, hmap.entrySet() 返回的是一个 Set集合 Set<Map.Entry<Integer, Employee>> ,下面循环你拿的又是 hmap.keySet()
把 List list = new ArrayList(hmap.entrySet()) 改成 ==> List list = new ArrayList(hmap.keySet());


楼主的Employee实现了接口 Comparable ,实现用salary 排序, 并不是想用KEY 排序
一般的俗 2021-05-08
  • 打赏
  • 举报
回复
sortBySalary() 里面, hmap.entrySet() 返回的是一个 Set集合 Set<Map.Entry<Integer, Employee>> ,下面循环你拿的又是 hmap.keySet() 把 List list = new ArrayList(hmap.entrySet()) 改成 ==> List list = new ArrayList(hmap.keySet());
得一以生 2021-05-07
  • 打赏
  • 举报
回复
报啥错,应该不会报错啊

62,614

社区成员

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

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