[英]Checking if 2 objects are in array then making out of it an object
我正在处理一个必须导入 3 个文本文件的问题:医生、患者、访问。 导入后,我需要将患者分配给医生并从中进行访问。
我的问题是,当我导入访问文件并创建对象访问时,它会获取患者的任何 ID 和医生的任何 ID。 我需要添加一点,它会检查文本文件的同一行中是否是医生的 ID 和患者的 ID,然后将它们分配在一起以创建一个对象。
我当前的代码显示了这一点:
public static void main(String[] args) {
List<Lekarz> lekarz = new ArrayList<>();
try {
File fileLekarze = new File("src/com/company/lekarze.txt");
Scanner readerLekarze = new Scanner(fileLekarze);
readerLekarze.nextLine();
while (readerLekarze.hasNextLine()) {
String[] data = readerLekarze.nextLine().trim().split("\t+");
lekarz.add(new Lekarz(Integer.parseInt(data[0]), data[1], data[2], data[3], new SimpleDateFormat("yyyy-MM-dd").parse(data[4]), data[5], data[6]));
}
readerLekarze.close();
} catch (FileNotFoundException e) {
System.out.println("Error File Lekarze");
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
List<Pacjenci> pacjent = new ArrayList<>();
try {
File pacjenciFile = new File("src/com/company/pacjenci.txt");
Scanner readerPacjenci = new Scanner(pacjenciFile);
readerPacjenci.nextLine();
while (readerPacjenci.hasNextLine()) {
String[] data = readerPacjenci.nextLine().trim().split("\t");
pacjent.add(new Pacjenci(Integer.parseInt(data[0]), data[1], data[2], data[3], new SimpleDateFormat("yyyy-MM-dd").parse(data[4])));
}
readerPacjenci.close();
} catch (FileNotFoundException e) {
System.out.println("Error File Pacjenci");
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
List<Wizyty> wizytyList = new ArrayList<>();
try {
File fileWizyty = new File("src/com/company/wizyty.txt");
Scanner readerWizyty = new Scanner(fileWizyty);
readerWizyty.nextLine();
while (readerWizyty.hasNextLine()) {
String[] data = readerWizyty.nextLine().trim().split("\t");
Lekarz lekarz1 = lekarz.stream()
.filter(m -> m.getIdLekarza() == Integer.parseInt(data[0]))
.findAny()
.orElse(null);
Pacjenci pacjenci1 = pacjent.stream()
.filter(m -> m.getIdPacjenta() == Integer.parseInt(data[1]))
.findAny()
.orElse(null);
Wizyty wizyta = new Wizyty(Integer.parseInt(data[0]), Integer.parseInt(data[1]), new SimpleDateFormat("yyyy-MM-dd").parse(data[2]));
wizytyList.add(wizyta);
}
readerWizyty.close();
} catch (FileNotFoundException e) {
System.out.println("Error File Wizyty");
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(wizytyList);
}
我用于访问的文本文件是这样的(医生 ID、患者 ID、日期):
Id_lekarza Id_pacjenta Data_wizyty
23 124 2006-12-13
23 172 2006-1-25
(这是医生文件中的一行:医生 ID、姓氏、姓名、出生日期、NIP 号码、个人号码 PESEL)
Id_lekarza Nazwisko Imie Specjalnosc Data_urodzenia NIP PESEL
23 Kadaj Monika laryngolog 1965-03-16 879-122-69-94 65031687654
(这是来自文件患者的一行:患者 ID、姓氏、姓名、个人编号 PESEL、出生日期)。
Id_pacjenta Nazwisko Imie PESEL Data_urodzenia
100 Kowal Waldemar 01211309876 2001-1-13
该程序的目的是例如检查患者去看医生的次数,访问次数最多的医生等。
我已经从 Visit 的构造函数中删除了病人和医生。 你认为它是好的还是留下它并保留它的遗产更好?
现在还有代码,我将如何更改它以使用 Paitient 对象和 Doctor 对象来制作 Visit 对象?
还是不使用继承会更好?
该对象是在@Marcin 的帮助下创建的,但我正在展望我需要创建的方法。 你会建议吗?
“任何 id”是什么意思?
我的问题是,当我导入访问文件并创建对象访问时,它会获取患者的任何 ID 和医生的任何 ID。
肯定你在这里有错误:
Pacjenci pacjenci1 = pacjent.stream()
.filter(m -> m.getIdPacjenta() == Integer.parseInt(data[0]))
.findAny()
.orElse(null);
您可以按医生 ID 筛选患者列表。 将其更改为:
Pacjenci pacjenci1 = pacjent.stream()
.filter(m -> m.getIdPacjenta() == Integer.parseInt(data[1]))
.findAny()
.orElse(null);
将来,您可以通过在操作中创建变量来保存子产品来避免此类错误:
Integer doctorId = Integer.parseInt(data[0]);
Integer paitientId = Integer.parseInt(data[1]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.