java - 用于轮班的简单程序
问题描述
我父亲让我为他制作一个程序,该程序将从 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;
}
}
我被困在这一刻。我认为这段代码比它应该的更复杂。如果有人能告诉我我该怎么做,或者也许有更简单的方法来制作这样的东西。
解决方案
我会这样做:
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 在程序的每次运行中都给出了不同的对象位置,因此放置EMPLOYEES
到positions
将是随机的。我提到检查 HashSetEMPLOYEES
的大小应该小于positions
. 我迭代哈希集——每个员工都应该得到一个职位。
推荐阅读
- blockchain - 如何创建具有特定私钥的帐户?
- uwp - 在 OnNavigatedTo 中调用 FileOpenPicker 仅适用于 PC 上的 Win 10,但不适用于 Win 10 Mobile
- sql - SQL:返回对酒店的无效评论
- pyspark - 如何在 Pyspark 中将两个数据集合并为一个
- python - 如何在 python 3.6.6 中修复 kernel_regularizer
- c# - 我需要帮助解决 Unity 3D 中的 CS1503 错误“无法从‘字符串’转换为‘浮点’”
- python - SQLAlchemy - 将结果格式化为字典列表
- android - 如何将 apk 文件与特定的 android 版本和手机硬件设置链接?
- python-3.x - 用张量流简单实现泰坦尼克号
- sql-server - 调用带有反斜杠的模式的过程