我的作业是使用二维数组接收控制台输入,每个员工(总共8个)在7天工作周内工作的小时数。然后,我将总计所有输入,然后按降序打印出每个员工的总数。
我已经能够弄清楚如何以降序打印出用户输入,但我不知道如何将它们打印给相应的员工#。
import java.util.Scanner;
import java.util.Arrays;
public class ComputingWeeklyHours {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int[][] register = new int[8][7];
System.out.println("Enter hours for each employee");
for (int i = 0; i < register.length; i++)
for (int j = 0; j < register[i].length; j++){
System.out.printf("Employee %d:", i+1);
register[i][j] = in.nextInt();
}
int[] totaledHours = sum(register);
Arrays.sort(totaledHours);
for (int k = totaledHours.length-1; k >= 0; k--){
System.out.print(totaledHours[k] + " ");
}
}
public static int[] sum(int[][] total){
int[] totaled = new int[8];
for (int i = 0; i < total.length; i++)
for (int j = 0; j < total[i].length; j++)
totaled[i] += total[i][j];
return totaled;
}
}
这将按降序打印出所有内容。
那么如何将每个索引与员工#相关联?
答案 0 :(得分:0)
如果员工#表示输入员工详细信息的顺序,您可以使用内部类将员工详细信息存储为员工编号及其总小时数,如下所示。
class Employee{
int employeeNo;
int totalHours;
}
然后修改sum()方法来存储一个employee对象数组,而不是一个int数组(只能存储一个int)。以下是如何更改sum方法的方法
public static Employee[] sum(int[][] total){
Employee[] totaled = new Employee[8];
for (int i = 0; i < total.length; i++)
Employee[i].employeeNo = i+1;
for (int j = 0; j < total[i].length; j++)
Employee[i].totalHours += total[i][j];
return totaled;
}