Esercizio su lancio dadi

di il
2 risposte

Esercizio su lancio dadi

Import java.util.Random;

public class Lancio_dadi {

public static void main(String args[])
{
Random numerocasuale=new Random();

int somma,x1,x2;
int array[]=new int[12];

for (int lanci=1; lanci<=36000; lanci++)
{
x1=1+numerocasuale.nextInt(6);
x2=1+numerocasuale.nextInt(6);
somma=x1+x2;
++array[somma];
}

System.out.printf("%s%10s\n", "Valore", "Frequenza");

for (int i=1; i<=array.length; i++)
System.out.printf("%4d%10d\n", i, array);
}

}


Non mi visualizza il risultato. Perchè?

2 Risposte

  • Re: Esercizio su lancio dadi

    ACK ha scritto:


    Non mi visualizza il risultato. Perchè?
    Ci sono diversi errori nel codice:

    1) array essendo lungo 12 ha indici da 0 a 11 compresi. Metre invece somma contiene la somma di x1+x2 e siccome ciascuno può andare da 1 a 6 compresi, puoi avere 12 che è fuori dall'array.
    Ti basta sottrarre 1 per indirizzare nell'array.

    2) Negli array gli indici partono da 0, quindi il for

    for (int i=1; i<=array.length; i++)

    è sbagliato ... perlomeno per l'uso che ne fai di 'i'. Quindi o parti da 0 e per il valore fai +1, oppure parti da 1 ma indirizzi con -1 nell'array. A tua scelta ....

    3) Quando si usa printf, se vuoi emettere un newline dovresti usare lo specificatore apposito che è %n ... non \n. Il %n usa la sequenza di newline corretta per la piattaforma. \n invia solo un line-feed e basta che potrebbe non essere appropriato/sufficiente.
  • Re: Esercizio su lancio dadi

    Perfetto. Adesso funziona. Grazie!
Devi accedere o registrarti per scrivere nel forum
2 risposte