对用户输入进行排序并在同一类别中打印输出

时间:2014-03-10 12:48:09

标签: java arrays sorting printing

我的作业是使用二维数组接收控制台输入,每个员工(总共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;
    }
}

这将按降序打印出所有内容。

那么如何将每个索引与员工#相关联?

1 个答案:

答案 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;
}