项目 6 统计雇员薪水
-
请编写一个 Java 应用程序,使用两个数组分别保存雇员的姓名和雇员的薪水(标准金额数字,包含两位小数)。程序提示用户输入雇员的人数,然后依次提示输入雇员的姓名和薪水。当输入雇员姓名后,姓名应该随即出现在后面的提示输入薪水信息中 (具体格式参考后面的程序运行效果图) 。
当所有的雇员信息都输入完成后,程序给出功能菜单供用户选择操作。这个功能菜单需要一直保留到用户选择退出(quit)为止。用户能进行以下操作: -
打印输出所有雇员的姓名和薪水;
-
打印输出获得最高薪水的雇员姓名和薪水;
-
打印输出获得最低薪水的雇员姓名和薪水;
-
打印输出所有雇员薪水的平均值以及大于、小于和等于平均薪水的雇员人数;
-
退出程序
在这个项目中,你至少要实现四个方法:第一个方法 printAll()用来逐行打印输出每一个雇员的姓名和薪水(用固定宽度打印输出,请参考 System.out.printf(…)方法的使用规则);第二个方法 getMaxSalaryIndex()用来查找最高薪水值,返回这个薪水值的数组下标;第三个方法 getMinSalaryIndex()用来查找最低薪水值,返回这个薪水值的数组下标;第四个方法printAverageStats()用来计算平均薪水值以及统计大于,小于和等于平均值得雇员人数并输出这些信息。输出结果应该格式规范清晰。代码行应该有适当的缩进和空行。
-
参考代码:
package SixthProject; import java.util.Scanner; public class LuoYu_6 { public static void main(String[] args) { System.out.print("Enter the number of employees: "); Scanner input = new Scanner(System.in); int number = input.nextInt(); String[] name = new String[number]; double[] salary = new double[number]; for (int i = 0;i < number;i++){ System.out.println((i + 1) + " of " + number); System.out.print("Enter employee name: "); name[i] = input.next(); System.out.print("Enter " + name[i] + "'s salary: "); salary[i] = input.nextDouble(); System.out.println(); } int choose; System.out.println("1 - Print All Employees"); System.out.println("2 - Print Maximum Salary"); System.out.println("3 - Print Minmun Salary"); System.out.println("4 - Print Average Stats"); System.out.println("5 - Quit"); System.out.print("Please choose an option: "); while ((choose = input.nextInt()) != 5){ System.out.println(); if (choose == 1) printAll(name,salary); if (choose == 2) getMaxSalaryIndex(name,salary); if (choose == 3) getMinSalaryIndex(name,salary); if (choose == 4) printAverageStats(name,salary); System.out.println("1 - Print All Employees"); System.out.println("2 - Print Maximum Salary"); System.out.println("3 - Print Minmun Salary"); System.out.println("4 - Print Average Stats"); System.out.println("5 - Quit"); System.out.print("Please choose an option: "); } return; } public static void printAll(String[] name,double[] salary){ System.out.println("All Employees Information"); for (int i = 0; i < name.length;i++){ System.out.printf("\t\t%-16s¥%.2f\n",name[i],salary[i]); } System.out.println(); } public static void getMaxSalaryIndex(String[]name,double[] salary){ double max = 0; int flag = -1; for (int i = 0;i < name.length;i++){ if (max < salary[i]) { max = salary[i]; flag = i; } } System.out.printf("The largest salary is ¥%.2f made by %s\n\n",max,name[flag]); } public static void getMinSalaryIndex(String[] name,double[] salary){ double min = 1e9; int flag = -1; for (int i = 0;i < name.length;i++){ if (min > salary[i]) { min = salary[i]; flag = i; } } System.out.printf("The largest salary is ¥%.2f made by %s\n\n",min,name[flag]); } public static void printAverageStats(String[] name,double[] salary){ double sum = 0,average = 0; int higher = 0,lower = 0,same = 0; for (int i = 0;i < name.length;i++){ sum += salary[i]; } average = sum / name.length; for (int i = 0;i < name.length;i++){ if (salary[i] > average) higher++; if (salary[i] < average) lower++; if (salary[i] == average) same++; } System.out.printf("The average salary was ¥%.2f\n",average); System.out.println("There are " + higher + "higher than average salaries," + lower + "lower than average salaries,and " + same + "average salaries\n"); } }
-
结果显示:
Enter the number of employees: 3 1 of 3 Enter employee name: zhangsan Enter zhangsan's salary: 6500 2 of 3 Enter employee name: lisi Enter lisi's salary: 7000 3 of 3 Enter employee name: wangwu Enter wangwu's salary: 7500 1 - Print All Employees 2 - Print Maximum Salary 3 - Print Minmun Salary 4 - Print Average Stats 5 - Quit Please choose an option: 1 All Employees Information zhangsan ¥6500.00 lisi ¥7000.00 wangwu ¥7500.00 1 - Print All Employees 2 - Print Maximum Salary 3 - Print Minmun Salary 4 - Print Average Stats 5 - Quit Please choose an option: 2 The largest salary is ¥7500.00 made by wangwu 1 - Print All Employees 2 - Print Maximum Salary 3 - Print Minmun Salary 4 - Print Average Stats 5 - Quit Please choose an option: 3 The largest salary is ¥6500.00 made by zhangsan 1 - Print All Employees 2 - Print Maximum Salary 3 - Print Minmun Salary 4 - Print Average Stats 5 - Quit Please choose an option: 4 The average salary was ¥7000.00 There are 1higher than average salaries,1lower than average salaries,and 1average salaries 1 - Print All Employees 2 - Print Maximum Salary 3 - Print Minmun Salary 4 - Print Average Stats 5 - Quit Please choose an option: 5 Process finished with exit code 0