Intellij Idea 使用“add”方法将对象添加到ArrayList,但它没有正确添加[关闭]

z6psavjg  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(175)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受回答。

这个问题是由错字或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
上个月关门了。
Improve this question
正如标题所说,我试图向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,而不是添加的内容。
这里有什么问题吗?

yi0zb3m4

yi0zb3m41#

FichaUtente fichautente = new FichaUtente(getUtenteEspecifico(num_utente));
        fichautente.adicionarMedicaoAux(m);

字符串
此代码:

  • 创建一个FiuchaUtente类型的新对象,并将其赋给局部变量fichautente
  • 调用一个方法。
    *然后把它直接扔进垃圾桶

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

相关问题