使用“add”方法将对象添加到ArrayList,但添加不正确

问题描述 投票:0回答:1

正如标题所说,我试图向 ArrayList 添加一个类对象实例,但显然它没有添加任何内容。

我正在尝试使用以下语法将对象添加到 ArrayList:

    public void adicionarMedicaoAux(Medicao m){this.medicoes.add(m); }

这是“toString()”:

    @Override
    public String toString() {
        return "Ficha de Utente\n------------------\n" +
                "Utente: " + utente + " | " +
                "Familiar(res) do utente: " + familiarUtente + " | " +
                "Medições: " + medicoes + " | " +
                "Prescrições: " + prescricoes + " | " +
                "Exames: " + exames + " | " +
                "Consultas: " + consultas;
    }

这里就用这个方法:

public void AdicionarMedicao(String num_utente, LocalDate data, double peso, double altura, int tensao_arterial, int saturacao_oxigenio, int imc) throws RemoteException, UtenteNaoExiste {
        c1+=1;
        Medicao m = new Medicao(data, peso, altura, tensao_arterial, saturacao_oxigenio, imc);
        medicoes.put(String.valueOf(c1),m);
        FichaUtente fichautente = new FichaUtente(getUtenteEspecifico(num_utente));
        fichautente.adicionarMedicaoAux(m);
    }

最终在客户端被调用:

System.out.println("Introduza o ID de utente seguido das medições efetuadas (ID utente, peso,altura,tensão arterial, saturação de oxigénio): ");
                            String medicaonova = scanner.nextLine();
                            String[] medicaopartes = medicaonova.split(",", -1);
                            LocalDate data = LocalDate.now();
                            Double peso = Double.parseDouble(medicaopartes[1]);
                            Double altura = Double.parseDouble(medicaopartes[2]);
                            Integer tens_art = Integer.parseInt(medicaopartes[3]);
                            Integer sat_ox = Integer.parseInt(medicaopartes[4]);
                            Double imc_d = peso / (altura*altura);
                            Integer imc = imc_d.intValue();
                            mi.AdicionarMedicao(medicaopartes[0],data,peso,altura,tens_art,sat_ox,imc);

这是最终输出:

001 - Ficha de Utente
------------------
Utente: Utente: Nome: Luís | Nif: 241637341 | CC: 14422517 | Data de nascimento: 2002-06-18 | Número do utente: 001 | Telefone: 910410666 | Telefone familiar: 914504925 | E-mail: [email protected] | Morada: Rua do Nascente n38 Gualtar Braga | Familiar(res) do utente: [] | Medições: [] | Prescrições: [] | Exames: [] | Consultas: []

如您所见,“Medições”部分显示了一个空白的 ArrayList,而不是添加的内容。

这里有什么问题?

java intellij-idea arraylist
1个回答
0
投票
FichaUtente fichautente = new FichaUtente(getUtenteEspecifico(num_utente));
        fichautente.adicionarMedicaoAux(m);

此代码:

  • 创建 FiuchaUtente 类型的新对象并分配给局部变量
    fichautente
  • 调用其方法。
  • 然后直接扔进垃圾桶

只有局部变量引用新创建的对象,当方法结束时局部变量就会进入垃圾箱。

© www.soinside.com 2019 - 2024. All rights reserved.