使用Java创建和返回员工列表

时间:2014-05-02 01:24:54

标签: java arrays sorting sample

晚上好。我只是尝试使用一种方法创建一个类,该方法允许您创建用户列表,他们的年龄和他们的部门(尽管我还没有对部门部分进行编码!)。我希望能够按年龄返回SORTED员工列表。我很久没有编写Java了,而且我有点生疏了。我的大部分时间都花在Perl和C ++上,所以任何帮助都会非常感激。多谢你们!

这是我的(破损)代码:

import java.util.Scanner;
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
public class Department{

    public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("How many employees?\n");
    int noOfEmployees = in.nextInt();
    String[][] employeeInformation;
    employeeInformation = new String[noOfEmployees][3];



    for (int row = 0; row < employeeInformation.length; row++){
        System.out.print("Enter employee name: ");
        try {
            employeeInformation[0][row] = br.readLine();
            } catch (IOException e) {
            e.printStackTrace();
                }
        System.out.print("Enter employee age: ");
        try {
            employeeInformation[1][row] = br.readLine();
            } catch (IOException e) {
            e.printStackTrace();
                }
        }
     Arrays.sort(employeeInformation, new Comparator<String[]>() { 
           public int compare(String[] entry1, String[] entry2){
            String name = entry1[0];
            String age = entry2[0];
            return name.compareTo(age);
           }
            });
     for(int i=0;i<employeeInformation.length;i++){
         System.out.println(employeeInformation[i][i]);
     }
    }   
}

2 个答案:

答案 0 :(得分:0)

使用您的代码

  employeeInformation[0][row] = br.readLine();
  employeeInformation[1][row] = br.readLine();

应该是

  employeeInformation[row][0] = br.readLine();
  employeeInformation[row][1] = br.readLine();

为什么要将年龄与排序中的名称进行比较

return name.compareTo(age);  // this does not make sense.

很抱歉粗暴,但尝试使用调试器或打印语句

答案 1 :(得分:-2)

好的,我有一些东西给你。我上了你的课程并对其进行修改以使其工作并使其变得更好。您可能仍希望根据需要进行更多错误检查和其他优化。这只是一个工作样本。

代码说明:
我创建了一个名为employee的内部类。但请随意将其分解为一个单独的课程。我只是为了方便起见发布样本。我希望它对你有所帮助。我已经测试过并且有效。

package com.vkg;

import java.util.Arrays;
import java.util.Scanner;

public class Department {

    public static void main(String[] args) {
        Department department = new Department();
        Scanner in = new Scanner(System.in);
        System.out.println("How many employees?\n");
        int noOfEmployees = in.nextInt();
        Employee[] employees = new Employee[noOfEmployees];

        for (int i = 0; i < employees.length; i++) {
            Employee employee = department.new Employee();
            System.out.print("Enter employee name: ");
            String employeeName = in.next();
            employee.setName(employeeName);

            System.out.print("Enter employee age: ");
            int age = in.nextInt();
            employee.setAge(age);

            employees[i] = employee;
        }
        Arrays.sort(employees);

        for (Employee employee : employees) {
            System.out.println(employee.getName() + "'s age = " + employee.getAge());
        }
    }

    public class Employee implements Comparable<Employee> {
        private String name;
        private int age;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        @Override
        public int compareTo(Employee o) {
            if(this == o || this.age == o.age) {
                return 0;
            } else if (this.age < o.age) {
                return -1;
            } else {
                return 1;
            }
        }
    }
}