a785867621 2018-02-27 12:12 采纳率: 100%
浏览 4380
已采纳

我这个只能捕获InputMismatchException异常,要想抛出该异常怎么写。

package lwz;

import java.util.*;

public class Employment {
public static void main(String[] args) throws java.util.InputMismatchException{
// 创建EmpManage对象
EmpManage em = new EmpManage();
Scanner sr = new Scanner(System.in);
// 作出一个菜单
while (true) {
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、按薪水高低排序");
System.out.println("7、计算平均工资及最高(低)工资");
System.out.println("0、退出系统");
System.out.print("请输入对应的数字进行操作:");
int sel = sr.nextInt();
switch (sel) {
case 1:
System.out.println("请录入新员工的信息");
try {
System.out.print("工号(输入-1返回到上一级菜单中):");
String empNo = sr.next();
if (empNo.equals("-1")) {
break;
}
System.out.print("姓名:");
String name = sr.next();
System.out.print("工资:");
float sal = sr.nextFloat();
// 构建emp对象
Emp emp = new Emp(empNo, name, sal);
// 将empNo,name,sal的值传给构造函数Emp
em.addEmp(emp);
System.out.println("创建新员工" + name + "成功!");
} catch (InputMismatchException e) {
System.out.println("请输入正确格式的工号、姓名和工资" + "\n工号必须为字符串形式"
+ "\n姓名必须为字符串形式" + "\n工资必须为数字类型");
}

            break;
        case 2:
            System.out.println("请录入员工工号:");
            String empNo1 = sr.next();
            em.showInfo(empNo1);
            break;
        case 3:
            System.out.println("公司所有员工信息如下:");
            em.AllInfo();
            break;
        case 4:
            System.out.println("请输入工号:");
            String empNo2 = sr.next();
            System.out.println("将工资修改为:");
            float newSal = sr.nextFloat();
            em.updateSal(empNo2, newSal);
            break;
        case 5:
            System.out.println("请输入要删除人员的工号:");
            String empNo3 = sr.next();
            em.delEmp(empNo3);
            break;
        case 6:
            System.out.println("已按薪资高低进行排序如下:");
            em.SortSal();
            break;
        case 7:
            System.out.println("显示平均工资及最高、最低工资人员信息如下:");
            em.Average();
            break;
        case 0:
            System.out.println("已正常退出!");
            System.exit(0);
            break;
        default:
            System.out.println("输入错误,请重新输入!");

        }

    }
}

}

// 创建员工管理类
class EmpManage {
private ArrayList al = new ArrayList();

// 加入员工
public void addEmp(Emp emp) {// 传入员工信息
    al.add(emp);
}

// 根据员工工号显示员工的相关信息
public void showInfo(String empNo) {// 将工号传入showInfo方法中
    // 遍历整个ArrayList
    for (int i = 0; i < al.size(); i++) {
        // 取出Emp对象
        Emp emp = al.get(i);
        // 比较编号
        if (emp.getEmpNo().equals(empNo)) {// 由于empNo类型为String,所以要使用equals进行内容比较,不可以使用==地址比较
            System.out.println("找到该员工,他的信息是:");
            System.out.println("工号:" + empNo + "\t姓号:" + emp.getName()
                    + "\t薪水:" + emp.getSal());
        }
    }
    System.out.println("工号不存在或者无此人,无法进行相关操作!");
}

// 显示所有员工信息
public void AllInfo() {
    for (int i = 0; i < al.size() - 1; i++) {// ArrayList集合类的al大小,控制循环
        for (int j = 1; j < al.size() - i; j++) {// 将al中的值进行循环比较
            Emp emp1 = (Emp) al.get(j - 1);
            Emp emp2 = (Emp) al.get(j);
            // 使用compareTo方法进行Sting类型值比较
            if (emp1.getEmpNo().compareTo(emp2.getEmpNo()) > 0) {
                al.set(j, emp1);// 交换值并重写入al中
                al.set(j - 1, emp2);// 交换值并重写入al中
            }
        }
    }
    for (Emp emp : al) {
        System.out.println("工号:" + emp.getEmpNo() + "\t姓名:" + emp.getName()
                + "\t工资:" + emp.getSal());
    }
}

// 修改员工的薪水
public void updateSal(String empNo, float newSal) {
    // 遍历整个ArrayList
    for (int i = 0; i < al.size(); i++) {
        // 取出Emp对象
        Emp emp = (Emp) al.get(i);
        if (emp.getEmpNo().equals(empNo)) {
            // 修改新水
            emp.setSal(newSal);// setSal会将修改的薪水传和ArrayList中
            System.out.println("已将" + emp.getName() + "调整为:" + newSal);
        }
    }
    System.out.println("工号不存在或无此人,无法进行相应操作!");
}

// 员工离职删除指定员工
public void delEmp(String empNo) {
    // 遍历整个ArrayList
    for (int i = 0; i < al.size(); i++) {
        // 取出Emp对象
        Emp emp = (Emp) al.get(i);
        if (emp.getEmpNo().equals(empNo)) {
            // 按工号删除
            al.remove(i);// 也可以使用al.remove(emp);
            System.out.println("已将" + emp.getName() + "信息清除!");
        }
    }
}

// 按薪水高低排序
public void SortSal() {
    for (int i = 0; i < al.size() - 1; i++) {// ArrayList集合类的al大小,控制循环
        for (int j = 1; j < al.size() - i; j++) {// 将al中的值进行循环比较
            Emp emp1 = (Emp) al.get(j - 1);
            Emp emp2 = (Emp) al.get(j);
            if (emp1.getSal() < emp2.getSal()) {// 比较sal的值大小
                al.set(j, emp1);// 交换值并重写入al中
                al.set(j - 1, emp2);// 交换值并重写入al中
            }
        }
    }
    for (Emp emp : al) {
        System.out.println("工号:" + emp.getEmpNo() + "\t姓名:" + emp.getName()
                + "\t工资:" + emp.getSal());
    }
}

// 计算平均工资并找出最高工资和最低工资的员工
public void Average() {
    float sum = 0f, ave = 0f;
    // 遍历整个ArrayList
    for (int k = 0; k < al.size(); k++) {
        // 取出Emp对象
        Emp emp = (Emp) al.get(k);
        sum = emp.getSal() + sum;
    }
    ave = sum / al.size();
    System.out.println("共有员工" + al.size() + "人\t总工资为:" + sum + "\t平均工资为:"
            + ave);

    // 找出最高工资与最低式资
    for (int i = 0; i < al.size() - 1; i++) {// ArrayList集合类的al大小,控制循环
        for (int j = 1; j < al.size() - i; j++) {// 将al中的值进行循环比较
            Emp emp1 = (Emp) al.get(j - 1);
            Emp emp2 = (Emp) al.get(j);
            if (emp1.getSal() < emp2.getSal()) {// 比较sal的值大小
                al.set(j, emp1);// 交换值并重写入al中
                al.set(j - 1, emp2);// 交换值并重写入al中
            }
        }
    }
    for (int i = 0; i < al.size(); i++) {
        if (i == 0) {
            Emp emp = (Emp) al.get(i);
            System.out.println("工资最高的人员是:" + emp.getName() + "\t薪水是:"
                    + emp.getSal());
        } else if (i == al.size() - 1) {
            Emp emp = (Emp) al.get(i);
            System.out.println("工资最低的人员是:" + emp.getName() + "\t薪水是:"
                    + emp.getSal());
        }
    }
}

}

// 创建员工类
class Emp {
// 定义成员变量工号、姓名、薪水
public String empNo;
public String name;
public float sal;

// 创建构造函数,初始化成员变量
public Emp(String empNo, String name, float sal) {
    this.empNo = empNo;
    this.name = name;
    this.sal = sal;
}

// 使用set、get方法进行数据传递
public String getEmpNo() {
    return empNo;
}

public void setEmpNo(String empNo) {
    this.empNo = empNo;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public float getSal() {
    return sal;
}

public void setSal(float sal) {
    this.sal = sal;
}

}

  • 写回答

1条回答 默认 最新

  • 弘树丶 2018-02-27 13:04
    关注

    在想要抛出该异常的地方,加上一行 throw new InputMismatchException(); 即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择