Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143

    Media

    Ciao..devo fare un programmino che mi calcoli la media tra i valori inseriti dall'utente..
    l'ho fatto ma non capisco perchè non mi funziona..

    codice:
    import java.util.Scanner;
    public class Media {
    	public static void main (String [] args) {
    	Scanner tastiera = new Scanner (System.in);
    	
    	System.out.println("Inserisci una sequenza di interi terminata da un non intero");
    	
    	while (!tastiera.hasNextInt()) { // controlla che vengano inseriti interi
    		tastiera.next(); // svuota il buffer
    		System.out.println("Inserisci almeno un intero!");
    	}
    	
    	int n;
    	int cont = 1;
    	int somma = 0;
    	double media = 0;
    	
    	while (!tastiera.hasNextInt()) {
    		n = tastiera.nextInt();
    		cont ++;
    		somma = somma + n;
    	} // while
    	
    	media = somma/cont;
    	System.out.println("La media dei numeri inseriti e': " + media);
    	
    	
    	}
    }
    restituisce come valore 0.0
    grazie..

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Media

    Originariamente inviato da vfldj
    codice:
    	while (!tastiera.hasNextInt()) { // controlla che vengano inseriti interi
    		tastiera.next(); // svuota il buffer
    		System.out.println("Inserisci almeno un intero!");
    	}
    Non vedo perché devi fare questo loop iniziale.

    Originariamente inviato da vfldj
    codice:
    	while (!tastiera.hasNextInt()) {
    		n = tastiera.nextInt();
    		cont ++;
    		somma = somma + n;
    	} // while
    In questo loop la condizione fa ciclare solo quando non c'è un intero ... sarebbe invece il contrario. E potresti fare tutto in questo ciclo. La condizione potrebbe essere while (true) e all'interno usi hasNextInt(). Se restituisce true fai nextInt() e i calcoli, se false fai next() (per estrarre il token errato) e un break per uscire dal ciclo.

    Originariamente inviato da vfldj
    media = somma/cont;
    E infine, essendo somma e cont dei int, la divisione è "intera": vuol dire che non ottieni decimali (es. 10/4 dà 2, non 2.5 !). Uno dei due dichiaralo come double o fai al volo il cast a double di uno dei due nella divisione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.