Come confrontare due oggetti all'interno dello stesso arrayList

di il
6 risposte

Come confrontare due oggetti all'interno dello stesso arrayList

La traccia chiede che si inseriscano i dati dei docenti ed in seguito vuole verificare se all'interno ci sono più tirocinii associati alla stessa matricola vi metto il codice per mostravi quello che ho fatto, spero di ricevere risposta, ringrazio in anticipo


Classe principale



package docente;

import it.unibas.utilita.Console;


public class Principale {

    
    
    private void inizio(){
        boolean continua  = true;
        Archivio archivio = new Archivio();
        while(continua){
            int scelta = this.schermoMenu();
            if(scelta == 0){
                System.out.println("Arrivederci");
                continua = false;
            }
            if(scelta == 1){
                Docenti p = this.leggiDati(archivio);
                archivio.aggiungiDocente(p);
                System.out.println("Docente aggiunto correttamente");
            }
            if(scelta == 2){
                System.out.println("inserisci il codice del docente");
                String codice = this.leggiStringaNonVuota();
                Docenti m = archivio.verificaCodice(codice);
                if(m == null){
                    System.out.println("Errore:il docente non esiste");
                }else{
                    System.out.println(m.toString());
                    if(m.getLunghezza() > 2){
                        System.out.println("questo docente non pùò gestire altri tirocini");
                    }else{
                        Tirocinio s = this.leggiTirocinio();
                        m.aggiungiTirocinio(s);
                        System.out.println("Aggiunto correttamente");
                    }
                }
            }
            if(scelta == 3){
                
                    if(archivio.verificaTirocinio()){
                    System.out.println("Ci sono più tirocinii con la stessa matricola");
                    }else{
                        System.out.println("non ci sono più tirocinii con la stessa matricola");
                    }
                                
            }
        }
    }
    
    private Docenti leggiDati(Archivio m){
        System.out.println("inserisci il codice del docente");
        String codice = this.leggiStringaNonVuota();
        while(m.verificaCodice(codice) != null){
            System.out.println("Errore: esiste già questo docente, fornisci dati"
                    + " differeti");
            codice = this.leggiStringaNonVuota();
        }
        System.out.println("inserisci nome e cognome del docente");
        String nomeCognome = this.leggiStringaNonVuota();
        System.out.println("inserisci la qualifica del docente valori ammessi"
                + " Professore Ordinario/Professore Associato/Ricercatore");
        String qualifica = this.leggiStringaNonVuota();
        while(!(qualifica.equalsIgnoreCase("Professore Ordinario") || 
                qualifica.equalsIgnoreCase("Professore Associato") ||
                qualifica.equalsIgnoreCase("Ricercatore"))){
            System.out.println("Errore: non puoi utilizzare una qualifica differente,riprova");
            qualifica = this.leggiStringaNonVuota();
        }
        return new Docenti(codice,nomeCognome,qualifica);
    }
    
    private Tirocinio leggiTirocinio(){
        System.out.println("inserisci la matricola dello studente");
        String matricola = this.leggiStringaNonVuota();
        System.out.println("inserisci il nome dello studente");
        String nome = this.leggiStringaNonVuota();
        System.out.println("inserisci il titolo del progetto");
        String titolo = this.leggiStringaNonVuota();
        System.out.println("inserisci le ore di lavoro necessarie");
        int ore = Console.leggiIntero();
        return new Tirocinio(matricola, nome, titolo, ore);
    }
    
    
    private int schermoMenu(){
        System.out.println("1) inserisci dati docente");
        System.out.println("2) inserisci dati tirocinio");
        System.out.println("3) cerca duplicati");
        System.out.println("4) calcola docente impeganto");
        System.out.println("5) Salva dati su disco");
        System.out.print("Inserisci la tua scelta: ");
        int scelta = Console.leggiIntero();
        while(scelta < 0 || scelta > 5){
            System.out.println("Errore: la tua scelta non è valida riprova");
            scelta = Console.leggiIntero();
        }
        return scelta;
    }
    
    private String leggiStringaNonVuota(){
        String stringa = Console.leggiStringa();
        while(stringa.trim().isEmpty()){
            System.out.println("Errore: non può essere vuota,riprova");
            stringa = Console.leggiStringa();
        }
        return stringa;
    }
    
    
    
    public static void main(String[] args) {
        Principale p = new Principale();
        p.inizio();
    }
    
}




Classe Archivio



package docente;

import java.util.List;
import java.util.ArrayList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Archivio {
    private List<Docenti> archivio = new ArrayList<>();
    private Logger log = LoggerFactory.getLogger("Archivio.class");
    
    public Docenti verificaCodice(String codice){
        for(Docenti s : this.archivio){ 
            if(s.getCodice().equalsIgnoreCase(codice)){
                log.debug("il codice è presente");
                return s;
            }
        }
        return null;
    }
    
    public void aggiungiDocente(Docenti m){
        this.archivio.add(m);
    }
    
    public boolean verificaTirocinio(){
        for(Docenti m : this.archivio){
            if(m.verifica()){
                return true;
            }
        }
        return false;
    }
    
}

Classe Docenti


package docente;

import java.util.List;
import java.util.ArrayList;


public class Docenti {
    private String codice;
    private String nomeCognome;
    private String qualifica;
    private List<Tirocinio> lista = new ArrayList<>();
        
    
    public Docenti(String codice,String nomeCognome,String qualifica){
        this.codice = codice;
        this.nomeCognome = nomeCognome;
        this.qualifica = qualifica;
    }
    
    public String getCodice(){
        return this.codice;
    }
    
    @Override
    public String toString(){
        StringBuilder m = new StringBuilder();
        m.append("\n Dati docente");
        m.append("\nCodice: " + this.codice);
        m.append("\nNome e Cognome: " + this.nomeCognome);
        m.append("\nQualifica: " + this.qualifica + "\n");
        return m.toString();
    }
    
    public int getLunghezza(){
        return this.lista.size();
    }
    
    public void aggiungiTirocinio(Tirocinio t){
        this.lista.add(t);
    }
    
    public int contaMatricola(){
        int conta = 0;
        Tirocinio s = lista.get(0);
        for(Tirocinio m : this.lista){
            if(s.getMatricola().equalsIgnoreCase(m.getMatricola())){
                conta++;
            }
        }
        return conta;
    }
    
    public boolean verifica(){
        for(Tirocinio m : this.lista){
            if(this.contaMatricola() > 1){
                return true;
            }
        }
        return false;
    }
    
    

}

Classe Tirocinio



package docente;


public class Tirocinio {
    private String matricola;
    private String nome;
    private String titolo;
    private int ore;
    
    public Tirocinio(String matricola,String nome,String titolo,int ore){
        this.matricola = matricola;
        this.nome = nome;
        this.titolo = titolo;
        this.ore = ore;
    }
    
    public String getMatricola(){
        return this.matricola;
    }
    
}


6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte