首页 > 解决方案 > 用于轮班的简单程序

问题描述

我父亲让我为他制作一个程序,该程序将从 Excel(或 CSV 文件)中随机取一个姓名、姓氏等,并将员工分配给工作。每个人必须每月至少工作一次,最多工作 4 次。程序输出应如下所示:

第 1 天:约翰·史密斯、詹姆斯·史密斯
第 2 天:查理·史密斯、托马斯·史密斯

这就是我的代码现在的样子

public static void main(String[] args) {

    String FileName = "excel.csv";

    File f = new File(FileName);
    String read = "";

    Map<Integer, Surname>SurnameArray = new HashMap<Integer, Surname>();

    try {
        Scanner scanner = new Scanner(f);
        while(scanner.hasNextLine()) {
            read = scanner.nextLine();
                String[] arraySplit = read.split(",");
                int kod = Integer.parseInt(tablicaSplit[0]);
                String rank = tablicaSplit[1];
                String name = tablicaSplit[2];
                String surname = tablicaSplit[3];

                SurnameArray.put(kod, new Nazwiska(kod, rank, name, surname));
                SurnameArray.get(kod).getAll();

        }
    } catch (FileNotFoundException e) {
        System.out.println("No file!");
    }

}

}

第二类看起来像这样:

Class Surnames {
private int kod;
private String rank;
private String name;
private String surname;

public Surnames(int kod, String rank, String name, String surname) {
    super();
    this.kod = kod;
    this.rank = rank;
    this.name = name;
    this.surname = surname;
}

    public void getAll() {
        System.out.println(rank + " " + name + " " + surname);
    }

    public int getKod() {
        return kod;
    }

    public void setKod(int kod) {
        this.kod = kod;
    }

    public String getRank() {
        return rank;
    }

    public void setRank(String rank) {
        this.rank = rank;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public void setNazwisko(String surname) {
        this.surname = surname;
    }

}

我被困在这一刻。我认为这段代码比它应该的更复杂。如果有人能告诉我我该怎么做,或者也许有更简单的方法来制作这样的东西。

标签: java

解决方案


我会这样做:

    class Surnames{ 

         private final HashSet<String> EMPLOYEES;
         private ArrayList<String> positions;

         Surnames(String csv){
             HashSet<String> tempEMPLOYEES = new HashSet<>();
             ArrayList<String> tempPositions = new ArrayList<>();
             /*here the code for putting csv data ino an tempEMPLOYEE hashSet, or a static setter method doing this, as well for tempPositions, containing array list of positions remember to check 
               if the hashset's size is equal or lower than arrayList's*/
             EMPLOYEES = tempEMPLOYEES;
             positions = tempPosition;
         }

         public void printShift(){

              for(int i = 0; i < EMPLOYEES.size(); i++){
                   System.out.println(positions.get(i) + "- " + EMPLOYEES.get(i));
              }
         }

      }

由于 hashSet 在程序的每次运行中都给出了不同的对象位置,因此放置EMPLOYEESpositions将是随机的。我提到检查 HashSetEMPLOYEES的大小应该小于positions. 我迭代哈希集——每个员工都应该得到一个职位。


推荐阅读