Java 字符串解析与对象创建:计算 1996 年前入职员工平均薪资
首先,我们可以按照分号(;)将字符串拆分成每个员工的信息。然后,再按照等号(=)和和符号(&)将每个员工的信息拆分成键值对。最后,根据键值对的值类型将其转换为对应的类型,并创建 Employee 对象。\n\n以下是一个可能的实现:\n\njava\nimport java.math.BigDecimal;\nimport java.text.ParseException;\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.List;\n\npublic class Main {\n public static void main(String[] args) {\n String input = "name=小红&age=17&salary=8000.00&hireDate=1991-07-03;" +\n "name=小明&age=23&salary=10000.00&hireDate=1992-12-11;" +\n "name=小白&age=18&salary=12000.00&hireDate=1996-01-09";\n\n String[] employeesInfo = input.split(";");\n\n List<Employee> employees = new ArrayList<>();\n\n for (String employeeInfo : employeesInfo) {\n String[] keyValuePairs = employeeInfo.split("&");\n\n Employee employee = new Employee();\n for (String keyValuePair : keyValuePairs) {\n String[] keyValue = keyValuePair.split("=");\n String key = keyValue[0];\n String value = keyValue[1];\n\n switch (key) {\n case "name":\n employee.setName(value);\n break;\n case "age":\n employee.setAge(Integer.parseInt(value));\n break;\n case "salary":\n employee.setSalary(new BigDecimal(value));\n break;\n case "hireDate":\n try {\n SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");\n Date hireDate = dateFormat.parse(value);\n employee.setHireDate(hireDate);\n } catch (ParseException e) {\n e.printStackTrace();\n }\n break;\n default:\n break;\n }\n }\n\n employees.add(employee);\n }\n\n BigDecimal totalSalary = BigDecimal.ZERO;\n int count = 0;\n\n for (Employee employee : employees) {\n if (employee.getHireDate().before(getDate("1996-01-01"))) {\n totalSalary = totalSalary.add(employee.getSalary());\n count++;\n }\n }\n\n BigDecimal averageSalary = totalSalary.divide(new BigDecimal(count), 2, BigDecimal.ROUND_HALF_UP);\n\n System.out.println("1996年前入职员工的平均薪资为:" + averageSalary);\n }\n\n private static Date getDate(String dateString) {\n SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");\n try {\n return dateFormat.parse(dateString);\n } catch (ParseException e) {\n e.printStackTrace();\n }\n return null;\n }\n}\n\nclass Employee {\n private String name;\n private int age;\n private BigDecimal salary;\n private Date hireDate;\n\n // Getter and Setter methods\n}\n\n\n运行结果:\n\n\n1996年前入职员工的平均薪资为:9000.00\n
原文地址: http://www.cveoy.top/t/topic/pYHY 著作权归作者所有。请勿转载和采集!