Newsgroup: it.comp.java
Titolo: Programma media

Ho creato questo programma per fare la media che permette di inesire dei
voti e di dare il risultato non appena si inserisce il valore -1. Il
programma funziona perfettamente, ma vorrei un consiglio. In pratica quando
inserisco il valore -1, il -1 mi viene contegiato come voto e quindio sono
stato costretto ad inserise il +1 nel totale dei voti. Come posso fare in
modo di non inserire un +1 nella formula del totale?
Qua di seguito č allegato il codice del programma, grazie a tutti.
// programma media;
import javax.swing.JOptionPane;
public class Medial {
    public static void main (String args [])
    {
    int totale,      //totale voti
        contatore,
        voton;
 double mediaVoto;
 String voto;
        totale = 0;
        contatore = 0;
        voto = JOptionPane.showInputDialog ("Inserisci primo numero, oppure
inserisci -1 per uscire");
        voton = Integer.parseInt ( voto );
        totale = totale + voton;
        if (voton < 0)
            JOptionPane.showMessageDialog ( null, "Arrivederci e grazie");
        else
            while ( voton >= 0){
            voto = JOptionPane.showInputDialog ("Inserisci primo numero,
oppure inserisci -1 per uscire");
            voton = Integer.parseInt ( voto );
            totale = totale + voton + 1;
            contatore ++;
            }
        mediaVoto = totale / contatore;
        JOptionPane.showMessageDialog ( null, "La media voto č: " +
mediaVoto);
        System.exit (0);
    }
}


Ci sono due errori.
Aggiungendo +1 ad ogni iterazione sfalsi il totale, lo devi aggiungere solo
una volta in uscita dal ciclo.
Contatore deve essere decrementato di 1, perchè l'iterazione in cui prendi
il segnale di stop immisione non deve essere contata.
Per cui
(*)diventa
totale = totale + voton;
alla posizione (**) aggiungi
totale=totale-1;
contatore=contatore-1;

 Contatore deve essere decrementato di 1, perchč l'iterazione in cui prendi



Non ho capito qual'è il problema allora.
Il contatore fato come dici tu è sbagliato.
Cioè sfalsa la media, no nho detto che da problemi.

 ha scritto nel messaggio
news:QWdu9.32654$aL4.9...@news1.tin.it...


 Quello che interessa sapere è come fare a non far prendere il -1 come
voto.
con quell'algoritmo non puoi, perchè si basa proprio sul fatto che prende
il -1 per stopparsi.
tra l'altro se come ultima immissione ci fosse un -2 l'immisisone si
stopperebbe lo stesso ma il +1 iniziale non lo controbilancerebbe.
Devi mettere un if.

Io ho fatto la prova ad esempio con i numeri che hai citato tu cioč 1 , 2 ,
3 e il risultato che mi da il mio programma č quello esatto cioč 2. La media
che mi viene data č corretta, non riscontro un errore. In pratica il
valore -1 viene aggiunto nel totale ma non viene conteggiato dal contatore,
quindi il contatore nel caso 1+2+3 rimane a 3, il -1 viene sommato all'1+2+3
ma siccome il totale č inizializzato al meno uno il prog fa questo calcolo
(1+1+2+3-1) / 3.
import javax.swing.JOptionPane;
public class Medial {
    public static void main (String args [])
    {
    int totale,
        contatore,
        voton;
double  mediaVoto;
 String voto;
        totale = 1;
        contatore = 0;
        voto = JOptionPane.showInputDialog ("Inserisci primo numero, oppure
inserisci -1 per uscire");
        voton = Integer.parseInt ( voto );
        totale = totale + voton;
        if (voton < 0)
            JOptionPane.showMessageDialog ( null, "Arrivederci e grazie");
        else
            while ( voton >= 0){
            voto = JOptionPane.showInputDialog ("Inserisci altri numeri,
oppure inserisci -1 per uscire");
            voton = Integer.parseInt ( voto );
            totale = totale + voton;
            contatore ++;   }
        mediaVoto = (double) totale / contatore;


 ha scritto nel messaggio
news:yzeu9.32743$aL4.9...@news1.tin.it...


 }
io direi di fare il blocco else in questo modo...
    else {
       do{
          totale = totale + voton;
          contatore++;
          voto = JOptionPane.showInputDialog("Inserisci primo numero, 
                    oppure inserisci -1 per uscire");
          voton = Integer.parseInt(voto);
          System.out.println("totale= " + totale);
          System.out.println("contatore= " + contatore);
       }while (voton >= 0);
       mediaVoto = (float)totale / contatore;
       JOptionPane.showMessageDialog(null,"La media voto : " + mediaVoto);
       System.exit (0);
    }
spero di non aver dimenticato nulla ^_^
-- 
"Il soggetto va prima del pregiudicato, poi la congiuntivite
 e dopo la condizionale" - Francesco Totti