Problema con percentuale

di il
2 risposte

Problema con percentuale

Ciao a tutti, sapreste dirmi perchè il seguente codice:
/*Si scrva un programma che computi la statistica per 8 lanci di una moneta.
Per ciascuno dei lanci effettuati, l'utente scrive t se è uscito testa e c se è uscito croce.
Il programma mostrerà il numero totale e la percentulae di teste e croci.*/

import java.util.Scanner;

public class TestaCroce {

	public static void main(String[] args) {
		Scanner keyboard = new Scanner(System.in);
		
		int i;
		String risposta;
		int teste = 0;
		int croci = 0;
		double percTest;
		double percCroc;
		
		System.out.print("Scrivi, per ognuno degli 8 lanci, se è uscita testa (t) oppure croce (c).\n\n"); 
		
		for (i = 1; i <= 8; i++) {
			System.out.print("Lancio n." + i + ": " );
			risposta = keyboard.next();
			
			if (risposta.charAt(0) == 't' || risposta.charAt(0) == 'T') {
				teste = teste + 1;
				}
			else if (risposta.charAt(0) == 'c' || risposta.charAt(0) == 'C') {
				croci = croci + 1;
		}
			}
		
		percTest = (teste / 8) * 100;
		percCroc = (croci / 8) * 100;
		
		System.out.print("\nNumero teste: " + teste);
		System.out.print("\nNumero croci: " + croci);
		System.out.printf("\nPercentuale teste: %.2f", percTest);
		System.out.printf("\nPercentuale croci: %.2f", percCroc);
	}

}
mi visualizza sempre le due percentuali finali come 0,00?

2 Risposte

  • Re: Problema con percentuale

    Mario Rossi ha scritto:


    		percTest = (teste / 8) * 100;
    		percCroc = (croci / 8) * 100;
    
    Le due divisioni che si vedono qui, teste/8 e croci/8 sono divisioni "intere". In Java un int diviso un int dà un int ... non un double.
    Se vuoi una divisione floating-point allora:

    percTest = (teste / 8.0) * 100;

    Se uno dei due operandi è un double, l'altro è portato a double e viene eseguita l'operazione con risultato double.
  • Re: Problema con percentuale

    andbin ha scritto:


    Mario Rossi ha scritto:


    		percTest = (teste / 8) * 100;
    		percCroc = (croci / 8) * 100;
    
    Le due divisioni che si vedono qui, teste/8 e croci/8 sono divisioni "intere". In Java un int diviso un int dà un int ... non un double.
    Se vuoi una divisione floating-point allora:

    percTest = (teste / 8.0) * 100;

    Se uno dei due operandi è un double, l'altro è portato a double e viene eseguita l'operazione con risultato double.
    Ah già già... vabbè, errore stupido grazie.
Devi accedere o registrarti per scrivere nel forum
2 risposte