Esercitazione classi Studenti

Classe Studente


public class Studente {

    // Attributi (privati: si accede tramite i metodi)
    private String nome;
    private String cognome;
    private int[] voti;      // array primitivo dei voti
    private int numVoti;     // quanti voti sono stati inseriti finora

    // Costruttore: crea lo studente con spazio per "maxVoti" voti
    public Studente(String nome, String cognome, int maxVoti) {
        this.nome = nome;
        this.cognome = cognome;
        this.voti = new int[maxVoti];
        this.numVoti = 0;
    }

    // Getter
    public String getNome() {
        return nome;
    }

    public String getCognome() {
        return cognome;
    }

    public int getNumVoti() {
        return numVoti;
    }

    /**
     * Aggiunge un voto all'array.
     * Restituisce true se il voto è stato aggiunto, false se non è valido
     * o se l'array è pieno.
     */
    public boolean aggiungiVoto(int voto) {
        if (voto < 1 || voto > 10) {
            return false;
        }
        if (numVoti == voti.length) {
            return false;
        }
        voti[numVoti] = voto;
        numVoti++;
        return true;
    }

    /** Stampa tutti i voti inseriti. */
    public void stampaVoti() {
        if (numVoti == 0) {
            System.out.println("Nessun voto inserito.");
            return;
        }
        System.out.print("Voti di " + nome + " " + cognome + ": ");
        for (int i = 0; i < numVoti; i++) {
            System.out.print(voti[i] + " ");
        }
        System.out.println();
    }

    /** Calcola la media dei voti (0 se non ci sono voti). */
    public double calcolaMedia() {
        if (numVoti == 0) {
            return 0;
        }
        int somma = 0;
        for (int i = 0; i < numVoti; i++) {
            somma += voti[i];
        }
        return (double) somma / numVoti;
    }

    /** Restituisce il voto più alto (0 se non ci sono voti). */
    public int votoMassimo() {
        if (numVoti == 0) {
            return 0;
        }
        int max = voti[0];
        for (int i = 1; i < numVoti; i++) {
            if (voti[i] > max) {
                max = voti[i];
            }
        }
        return max;
    }
}

File main Class

import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        // Acquisizione dati dello studente
        System.out.print("Inserisci il nome dello studente: ");
        String nome = input.nextLine();

        System.out.print("Inserisci il cognome dello studente: ");
        String cognome = input.nextLine();

        System.out.print("Quanti voti al massimo vuoi registrare? ");
        int maxVoti = input.nextInt();

        // Creazione dell'oggetto
        Studente s = new Studente(nome, cognome, maxVoti);

        int scelta;
        do {
            System.out.println("\n===== MENU =====");
            System.out.println("1) Inserisci un voto");
            System.out.println("2) Visualizza i voti");
            System.out.println("3) Calcola la media");
            System.out.println("4) Mostra il voto più alto");
            System.out.println("0) Esci");
            System.out.print("Scelta: ");
            scelta = input.nextInt();

            switch (scelta) {
                case 1:
                    System.out.print("Inserisci il voto (1-10): ");
                    int voto = input.nextInt();
                    if (s.aggiungiVoto(voto)) {
                        System.out.println("Voto aggiunto!");
                    } else {
                        System.out.println("Errore: voto non valido o registro pieno.");
                    }
                    break;

                case 2:
                    s.stampaVoti();
                    break;

                case 3:
                    if (s.getNumVoti() == 0) {
                        System.out.println("Nessun voto inserito.");
                    } else {
                        System.out.printf("Media: %.2f%n", s.calcolaMedia());
                    }
                    break;

                case 4:
                    if (s.getNumVoti() == 0) {
                        System.out.println("Nessun voto inserito.");
                    } else {
                        System.out.println("Voto più alto: " + s.votoMassimo());
                    }
                    break;

                case 0:
                    System.out.println("Arrivederci!");
                    break;

                default:
                    System.out.println("Scelta non valida, riprova.");
            }
        } while (scelta != 0);
    }
}