Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]lanci di una moneta

    ciao a tutti ho il seguente problema:
    scrivere un programma che utilizzando il metedo nextBoolean() della classe random,simuli una sequenza di lanci di moneta(il numero di lanci è inserito dall'utente);calcolate poi la percentuale di lanci che forniscono come risultato testa e la percentuale di lanci di croce. Al crescere del numero di lanci le percentuali dovrebbero stabilizzarsi al 50%.
    Ho cercato di scrivere il seguente codice:
    codice:
    import java.util.Random;
    import java.util.Scanner;
    class Moneta{
    public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    System.out.println("numero di lanci");
    int lanci=sc.nextInt();
    Random r=new Random();
    boolean testa=true;
    for(int i=0;i<lanci;i++){
        boolean ok=r.nextBoolean();
        while(testa){
            ????
             }   
           }
        }
    }
    Solo che come faccio a calcolare la % se ho come risultati valori booleani?

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Puoi associare true=1 e false=0 o semplicemente tenere due contatori: uno lo incrementi se esce true e l'altro lo incrementi se esce false.

  3. #3
    bè basta convertirlo....
    codice:
    int mioNumero =(ok)?1:0;

  4. #4
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    ok ho riprovato a rifarlo e come sempre ci sono altri problemi
    Il codice è questo:
    codice:
    int lanci=sc.nextInt();
    Random r=new Random();
    int  count=1;
    int count1=1;
    for(int i=0;i<lanci;i++){
        boolean testa=true;
        boolean ok=r.nextBoolean();
        if(testa==ok){
            count++;
            System.out.println(ok);
            System.out.print(count);
            }else
            count1++;
            System.out.println(ok);
            System.out.print(count1);
            }
        }
    }
    Solo che da terminale ho:
    Otput:
    numero di lanci
    5
    true
    2true
    1true
    3true
    1false
    2false
    3false
    Perchè non mi prende anche il primo true? E perchè il contatore è così sballato?

  5. #5
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Il codice era scritto parecchio male. Guarda questo:

    codice:
    import java.util.Random;
    import java.util.Scanner;
    
    
    public class Moneta {
    
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            System.out.println("Numero di lanci: ");
            int lanci=sc.nextInt();
            Random r=new Random();
            int  countTesta=0;
            int countCroce=0;
            for(int i=0;i<lanci;i++) {
                boolean ok = r.nextBoolean();
                if(true == ok){
                    countTesta++;
                } else
                    countCroce++;
            }
            
            System.out.println("Totale testa: " + countTesta);
            System.out.println("Totale croce: " + countCroce);
    
            sc.close();
        }
    
    }


  6. #6
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    ok hai ragione era solo una questione di parentesi grazie 1000 gentilissimo

  7. #7
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Prego! Adesso devi solo calcolare le percentuali, ma non è difficile!


  8. #8
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    si fatto grazie ancora

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.