Eliminar datos de una clase insertados en un arraylist

Iniciado por jorgecotrinax, 7 Noviembre 2021, 18:36 PM

0 Miembros y 1 Visitante están viendo este tema.

jorgecotrinax

tengo la clase  ClassPaciente


public class ClassPaciente {
private String Codigo,apellido,nombre;
private double dias,costodia,pago=0;

    public ClassPaciente(String Codigo, String apellido, String nombre, double dias, double costodia) {
        this.Codigo = Codigo;
        this.apellido = apellido;
        this.nombre = nombre;
        this.dias = dias;
        this.costodia = costodia;
    }

    public double Calculo ( double dias , double costodia ){
        pago=dias * costodia;
        return pago;
    }   

    @Override
    public String toString() {
        return "ClassPaciente{" + "Codigo=" + Codigo + ", apellido=" + apellido + ", nombre=" + nombre + ", dias=" + dias + ", costodia=" + costodia +", Pago " + Calculo(dias, costodia) +  '}';
    }

}




En un formulario he insertado los datos en la Clase y en un arraylist


Boton para insetar datos


   Codigo = txtCod.getText();
     apellido=txtApe.getText();
     nombre=txtNom.getText();
     dias = Double.parseDouble(txtDias.getText());
     costodia= Double.parseDouble(txtCostDia.getText());
     
     ClassPaciente pas = new ClassPaciente(Codigo, apellido, nombre, dias, costodia);
     
     txtpay.setText(""+ pas.Calculo(dias, costodia) );   

   // esta  inicializado ArrayList lista = new ArrayList();
 
     lista.add(pas);       
   
        Iterator<ClassPaciente> iter = lista.iterator();   
       
     
       
         atpaciente.setText(null);   
        while (iter.hasNext()) {         
            atpaciente.append(iter.next()+"\n");           
        }       
     
     



Necesito un botón para que escribiendo el Código del del paciente pueda eliminar el dato del arraylist e imprima la lista nueva mente para ser comprobado

he intentado hacer algo asi pero el dato no se elimina




    while (iter.hasNext()){
          pas=iter.next();
          if(pas.getCodigo()= Codigo){             
         iter.remove();
         }
      }
      atpaciente.setText(null);   
        while (iter.hasNext()) {         
            atpaciente.append(iter.next()+"\n");           
        }




K-YreX

Por un lado, no puedes utilizar el signo "=" para comparar. Este signo es el operador de asignación (da un valor), no de comparación. El signo de comparación para comparar datos primitivos o direcciones de memoria es "==".

Por otro lado, en tu caso no quieres comparar ni un dato primitivo (int, float, char, ...) ni una dirección de memoria sino el contenido de un objeto (String). Para ello necesitas utilizar el método equals().
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;