java使用异常捕获机制完成下述IO操作 编写程序要求下面的类实现功能 添加新员工 要求用户输入一个员工信息格式如下 jackson25男50002008-12-22 用户输入后需要做下述验证使用正则表达式判断 要求用户名长度在1-20个字符之间且必须是英文 年龄在0-100之间的整数 性别只能是男或女 当发
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner;
public class AddEmployee {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = null;
int age = 0;
String gender = null;
double salary = 0;
String hireDate = null;
while (true) {
try {
System.out.println("请输入员工信息,格式如下:");
System.out.println("姓名,年龄,性别,薪水,入职日期");
String employeeInfo = scanner.nextLine();
String[] infoArray = employeeInfo.split(",");
if (infoArray.length != 5) {
throw new IllegalArgumentException("输入格式不正确,请重新输入");
}
name = infoArray[0].trim();
if (!name.matches("[a-zA-Z]{1,20}")) {
throw new IllegalArgumentException("姓名长度在1-20个字符之间且必须是英文,请重新输入");
}
age = Integer.parseInt(infoArray[1].trim());
if (age < 0 || age > 100) {
throw new IllegalArgumentException("年龄在0-100之间的整数,请重新输入");
}
gender = infoArray[2].trim();
if (!gender.equals("男") && !gender.equals("女")) {
throw new IllegalArgumentException("性别只能是“男”或“女”,请重新输入");
}
salary = Double.parseDouble(infoArray[3].trim());
hireDate = infoArray[4].trim();
if (!hireDate.matches("\\d{4}-\\d{2}-\\d{2}")) {
throw new IllegalArgumentException("日期格式不正确,请重新输入");
}
break;
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
try (BufferedWriter writer = new BufferedWriter(new FileWriter("emp.txt", true))) {
writer.write(name + "," + age + "," + gender + "," + salary + "," + hireDate);
writer.newLine();
System.out.println("添加成功");
} catch (IOException e) {
System.out.println("写入文件失败");
}
}
原文地址: https://www.cveoy.top/t/topic/heJL 著作权归作者所有。请勿转载和采集!