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);
}
}