Esercizio java: calcolare la media di 5 numeri

Ricevo da uno studente la mail seguente:

questo eserczio dovrebbe calcolare la media degli studenti solo che non riesco a capire dove commetto l’errore NOn penso sia un errore di sintassi perche il compilatore non mi da errore ,ma non mi calcola bene la media.
cordiali saluti.
import java.util.Scanner;
public class Studenti
{
int counter;
double media;
int voto;
int  totale;
public void calcolare()
{
Scanner input=new Scanner(System.in);
for(int counter=1; counter<=5; counter++)
{
System.out.print(”voto:”);
System.out.print(”");
voto=input.nextInt();
totale=totale +voto;
media=totale/5;
}

System.out.println(”la media è:”+media);
}
}

——————————–

La soluzione proposta è quasi corretta e compila perfettamente.

C’è un solo errore: la media (istruzione  media=totale/5;) va calcolata alla fine del ciclo for in quanto non ha senso calcolarla 5 volte. In pratica bisogna spostare l’istruzione in questione dopo la parentesi chiusa che la segue al momento.

Ricordo inoltre in genere è bene mettere un metodo main che avvii il comportamento del programma. Questo è obbligatorio quando l’esercizio richiede la realizzazione di un programma e non di una classe (che è una parte di un programma più ampio).

6 Commenti a “Esercizio java: calcolare la media di 5 numeri”

  1. GRAFFEO.FRANCESCO scrive:

    Professore, ma tale esercizio non si potrebbe risolvere introducendo 5numeri da tastiera e calcolare la media senza utilizzare il ciclo for?

  2. GRAFFEO.FRANCESCO scrive:

    risolto in questa maniera va bene??

    import javax.swing.JOptionPane;

    public class Media
    {
    private int a;
    private int b;
    private int c;
    private int d;
    private int e;
    private double total;
    private double risultato;

    public double calcolomedia()
    {
    String input;

    input=JOptionPane.showInputDialog(”Inserisci primo numero:”);
    a=Integer.parseInt(input);

    input=JOptionPane.showInputDialog(”Inserisci secondo numero:”);
    b=Integer.parseInt(input);

    input=JOptionPane.showInputDialog(”Inserisci terzo numero:”);
    c=Integer.parseInt(input);

    input=JOptionPane.showInputDialog(”Inserisci quarto numero:”);
    d=Integer.parseInt(input);

    input=JOptionPane.showInputDialog(”Inserisci quinto numero:”);
    e=Integer.parseInt(input);

    total=a+b+c+d+e;
    risultato=total/5;

    JOptionPane.showMessageDialog(null, “La media è:”+risultato, “Risultato”, JOptionPane.INFORMATION_MESSAGE);
    return total;
    }

    public static void main(String args[])
    {
    Media ciao=new Media();
    ciao.calcolomedia();
    }
    }

  3. Anna.Ciaccio scrive:

    professore io questo esercizio l’ho svolto, però mi considera come totale soltanto l’ultimo valore che assegno a voto.
    import java.util.Scanner;
    public class Voto
    {
    private int totale;
    private int a;
    public void calcola()
    {
    for(int i=1;i<=5;i++)
    {
    Scanner in = new Scanner(System.in);
    System.out.println(”voto:”);

    a=in.nextInt();
    }

    totale =totale+a;
    double media;
    media=totale/5;
    System.out.println(”la media è:”+media);
    }

    public static void main(String args[])
    {
    Voto io= new Voto();
    io.calcola();
    }

  4. Alfocar scrive:

    anna cosi viene bene

    import java.util.Scanner;
    public class Voto
    {
    private int totale;
    private int a;
    private double media;
    public void calcola()
    {
    for(int i=1;i<=5;i++)
    {
    Scanner in = new Scanner(System.in);
    System.out.println(”voto:”);
    a=in.nextInt();
    totale =totale+a;
    }
    media=totale/5;
    System.out.println(”la media è:”+media);
    }

    public static void main(String args[])
    {
    Voto io= new Voto();
    io.calcola();
    }
    }

  5. cossentino scrive:

    Rispondo a Graffeo:
    la soluzione proposta è stilisticamente poco adatta. Non bisogna ripetere più volte porzioni di codice simili (in cui si possono inserire errori ad esempio di copia/incolla).
    Molto, molto meglio mettere una piccola porzione di codice in grado di fare il lavoro di tutte le altre. Da questo punto di vista preferisco la soluzione precedente.

  6. cossentino scrive:

    Rispondo a Anna.Ciaccio:
    Lei non aggiorna mai il valore della variabile totale dentro il ciclo di lettura dei voti. Lo fa fuori e alla fine, per questo le considera l’ultimo voto soltanto.
    Basta cambiare le sequenti righe di codice:

    a=in.nextInt();
    }
    totale =totale+a;

    in questo modo:

    a=in.nextInt();
    totale =totale+a;
    }

    Le ricordo inoltre che è sempre bene inizializzare esplicitamente le variabili (per esempio totale va inizializzata a 0)

Lascia un Commento

Devi aver fatto il login per inviare un commento