当前位置: 首页 > 知识库问答 >
问题:

检查阵列中是否有2个对象,然后从中提取一个对象

严阳成
2023-03-14

我正在解决一个问题,我必须导入3个文本文件:医生、病人、就诊。一旦导入,我需要将患者分配给医生

我的问题是,当我导入访问文件时

我当前的代码显示:

  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

(这是文件Paitient中的一行:Paitient的ID、姓氏、姓名、个人编号PESEL、出生日期)。

Id_pacjenta Nazwisko    Imie    PESEL   Data_urodzenia
     100    Kowal     Waldemar  01211309876 2001-1-13

例如,该计划的目的是检查患者就诊次数,哪位医生就诊次数最多等。

我已经把病人移走了

还有现在的代码,我该如何更改它以使用Paitient对象和Doctor对象来创建Visit对象?

还是不使用继承更好?

该对象是在@Marcin的帮助下创建的,但我正在展望我需要创建的方法。你会建议吗?

共有1个答案

拓拔阎宝
2023-03-14

你说的“任何身份证”是什么意思?

我的问题是,当我导入访问文件时

当然,这里有bug:

            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]);
 类似资料:
  • 问题内容: 我正在玩Java的反射API,并尝试处理一些字段。现在,我要确定字段的类型。字符串很简单,只需执行即可。其他非派生类也是如此。但是,如何检查派生类?例如作为的子类。我无法找到任何或方法。我是否需要遍历所有人并自己找到超人? 问题答案: 您需要此方法: 一般情况下,(以上)应替换为并应替换为 从JavaDoc: 确定此对象表示的类或接口是否与指定参数表示的类或接口相同或超类或超接口。如果

  • 本文向大家介绍如何检查一个对象是否为空,包括了如何检查一个对象是否为空的使用技巧和注意事项,需要的朋友参考一下 检查一个数组为空很容易,直接调用 length 方法即可,那么如何检查一个对象是否为空呢 ❓ 这里的空指的是对象没有自有属性 假设这里有两个对象,一个是 obj 一个是 anotherObj 想了半天查看对象是否有 Symbol 属性只能使用 getOwnPropertySymbols

  • 我有一个创建Element类型arraylist的主类: 然后我有一个元素clas: 我想在将一个元素添加到列表(它的id和名称)之前进行检查,以检查列表中已经存在的另一个元素是否已经具有这些精确值(id和名称)。我知道我可以使用toString方法来实现这一点,但我不确定如何在将元素添加到列表之前重写它以传递id和名称。他们是这样做的吗?理想情况下,我只想添加一个元素,如果它还不存在的话。

  • 我想检查一个对象是否有新的子对象。我的意思是我有一个带有x嵌套对象的对象,但是如果主对象有新对象,我会检查它。有什么现有的解决方案来检查这个问题吗? 我的目标是如果对象有新项目,则调用函数。每次数组更改时,此代码都会调用该函数。也当一些项目被删除。这部分功能是错误的。有办法修好它吗?

  • 本文向大家介绍检查两个StringBuilder对象在C#中是否相等,包括了检查两个StringBuilder对象在C#中是否相等的使用技巧和注意事项,需要的朋友参考一下 要检查两个StringBuilder对象是否相等,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-