Questo programma memorizza in un array un elenco di frazioni e quindi ne esegue la somma e la media. Da notare è l'uso dell'array e dei due cicli per percorrerlo, cioè i cicli FOR e FOR EACH.
//crea un array e somma un numero di frazioni stabilito dall'utente
// e ne stabilisce la media
import prog.io.*;
import prog.utili.Frazione;
class ArrayFrazione {
public static void main(String[] args) {
ConsoleInputManager tastiera = new ConsoleInputManager();
ConsoleOutputManager video = new ConsoleOutputManager();
//chiede e assegna alla costante il numero di frazioni da inserire
final int MAX = tastiera.readInt("Quante frazioni vuoi inserire? ");
//assegnazione degli oggetti
Frazione somma = new Frazione(0);
Frazione media;
String visualSomma = "";
String visualMedia = "";
//se non si vuole inserire nessuna frazione esce subito
if (MAX != 0) {
//imposta l'array, tra parentesi quadre viene indicato
//il numero di elementi di cui è composto l'array
Frazione[] fraz = new Frazione[MAX];
//lettura delle frazioni
for (int pos = 0; pos < MAX; pos++) {
video.println("Lettura della frazione n." + (pos + 1) + ": ");
int numeratore = tastiera.readInt("Numeratore: ");
int denominatore = tastiera.readInt("Denominatore: ");
fraz[pos] = new Frazione(numeratore, denominatore);
somma = somma.piu(fraz[pos]);
//assegna alla stringa visualizza la prima frazione
visualSomma = fraz[0].toString();
//nel caso di ciclo for-each questa istruzione va tolta
//visto che il ciclo for-each parte sempre da zero
//visualMedia = fraz[0].toString();
}
//calcola la media
media = somma.diviso(new Frazione(MAX));
//legge le frazioni e calcola la somma
for (int pos = 1; pos < MAX; pos++) {
visualSomma = visualSomma + " + " + fraz[pos].toString();
}
//visualizza la somma
video.println(visualSomma + " = " + somma.toString());
//legge le frazioni col metodo for-each
//ogni frazione trovata nell'array fraz viene assegnata
//alla frazione j
for (Frazione j : fraz) {
visualMedia = visualMedia + "; " + j.toString();
}
//visualizza la media
video.println(visualMedia + " la media e': " + media.toString());
} //fine primo if
else {
video.println("Non e' stata sommata nessuna frazione!");
}
}
}