Controllo per numeri univoci

di il
1 risposte

Controllo per numeri univoci

Buongiorno a tutti, mi chiamo Andrea e da qualche mese sto seguendo un corso di formazione java, dovrei creare un programma dove inserire dei dati di studenti, tra questi i numeri di matricola, ma vorrei inserire un controllo che impedisca di inserire 2 volte lo stesso numero in modo che sia univoco, oppure meglio creare una sequenza crescente di numeri in modo da non doverlo nemmeno scrivere.
Qualcuno potrebbe scrivermi un codice d'esempio?
Per ora ho scritto questo codice, grazie a tutti!


package presentazione;


public class Studente extends Persona{
private int matricola;


public Studente(){
super();
matricola = 0;
}

public Studente(String nomeIniziale, int matricolaIniziale){
super(nomeIniziale);
matricola = matricolaIniziale;

}

public void reimposta (String nuovoNome, int nuovaMatricola){
setNome(nuovoNome);
matricola = nuovaMatricola;
}

public int getMatricola(){
return matricola;
}

public void setMatricola(int nuovaMatricola){
matricola = nuovaMatricola;
}

public void scriviOutput(){
System.out.println("Nome: "+ getNome() );
System.out.println("Matricola: "+ matricola);
}

}

1 Risposte

  • Re: Controllo per numeri univoci

    Andrea Z ha scritto:


    vorrei inserire un controllo che impedisca di inserire 2 volte lo stesso numero in modo che sia univoco, oppure meglio creare una sequenza crescente di numeri in modo da non doverlo nemmeno scrivere.
    Non hai mostrato Persona ma la classe Studente che hai scritto, non è tecnicamente sbagliata di per sé. Sarebbe migliorabile dal punto di vista delle denominazioni. Generalmente si evita di "inventarsi" nomi differenti per i parametri. Si usa tipicamente lo stesso nome del campo e poi nel "setter" si usa this.nome per fare riferimento al campo, dato che il parametro lo nasconde.

    Insomma il modo "convenzionale" per esporre una proprietà è es.:
    public void setNome(String nome) {
        this.nome = nome;
    }
    
    public String getNome() {
        return nome;
    }
    Abituati a questa forma, perché te la ritroverai e ti servirà in futuro.
    Inoltre metodi come "reimposta" di per sé non servirebbero, anche se male non fanno.

    Torniamo invece alla questione che hai posto, ovvero la "univocità" della matricola. Inserire un controllo non è molto buono, anche perché allora dovresti tenere una "base dati" in memoria con tutte le matricole generate! Nell'ottica di un semplice esercizio sarebbe anche fattibile ma non è comunque la soluzione migliore.
    Puoi certamente generare un numero progressivo. Il minimo che potresti fare è tenere anche un campo private static che contiene il numero "progressivo". Nel costruttore prendi il numero dal progressivo, lo assegni al campo e poi incrementi il progressivo. Essendo il progressivo static è "globale" rispetto a tutte le istanze.
    Se dovesse essere fatto per un contesto multi-threading servirebbe anche altro (ma non è sicuramente il tuo caso).

    Ah, se gestisci un progressivo del genere, chiaramente il setMatricola andrebbe tolto.
Devi accedere o registrarti per scrivere nel forum
1 risposte