Java Homework-Store compte dans un tableau


J'essaie d'écrire un programme qui stockera le nombre d'un nombre aléatoire dans un tableau à une seule dimension. Je suis coincé lors de l'attribution du nombre de nombres au tableau. C'est une erreur logique et il compile très bien. Grâce.

public class PP67 {
    public static void main(String[] args) {

        int zero =0, one=0, two=0, three=0, four=0, five=0, six=0, seven=0, eight=0, nine=0;
        int[] counts = new int[10];//create array
        int i;

        for(i = 0; i < 100; i++) {

            int rand = (int)(Math.random()*10);     //generate 100 random ints between 0-9

            if (rand == 1){                    //assign the random number counter to the array
                one++;
                counts[0] = one;


            } else if (rand == 2) {
                two++;
                counts[1] = two;


            } else if (rand == 3) {
                three++;
                counts[2] = three;


            } else if (rand == 4) {
                four++;
                counts[3] = four;


            } else if (rand == 5) {
                five++;
                counts[4] = five;


            } else if (rand == 6) {
                six++;
                counts[5] = six;


            } else if (rand == 7) {
                seven++;
                counts[6] = seven;


            } else if (rand == 8) {
                eight++;
                counts[7] = eight;


            } else if (rand == 9) {
                nine++;
                counts[8] = nine;


            } else if (rand == 0) {
                zero++;
                counts[9] = zero;

            }

        }
        System.out.println("The count for number 1 is: " + counts[0]); //need outside count loop
        System.out.println("The count for number 2 is: " + counts[1]);
        System.out.println("The count for number 3 is: " + counts[2]);
        System.out.println("The count for number 4 is: " + counts[3]);
        System.out.println("The count for number 5 is: " + counts[4]);
        System.out.println("The count for number 6 is: " + counts[5]);
        System.out.println("The count for number 7 is: " + counts[6]);
        System.out.println("The count for number 8 is: " + counts[7]);
        System.out.println("The count for number 9 is: " + counts[8]);
        System.out.println("The count for number 0 is: " + counts[9]);
    }
}
Author: Pivo, 2014-03-29

2 answers

Le problème est ici:

int rand = (int)Math.random()*10;

Le cast comme un priorité plus élevée que la multiplication.

Depuis Math.random renvoie un double dans [0, 1[ (comme le documentation unis), moulage int après finiront toujours par un 0. Donc, vous faites toujours 0 * 10. Par conséquent, rand est toujours 0.

Multipliez d'abord le nombre aléatoire par 10, puis convertissez-le en int.

int rand = (int)(Math.random()*10);

Vous pouvez Également utiliser le nextInt(int n) la méthode de la Random classe.

Random r = new Random();
int rand = r.nextInt(10); //will generate a random number in [0, 9]
 3
Author: Alexis C., 2014-03-28 21:37:28

1) Vous n'avez pas besoin de conserver les mêmes informations à la fois dans les variables un, deux trois, etc. et dans le nombre de tableaux.

2) L'expression int rand = (int)(Math.random()*10) retourne toujours 0. Pour générer des nombre aléatoire dans [0,9], il est préférable d'utiliser

Random r = new Random();
int rand = r.nextInt(10);

3) Vous n'avez pas besoin de toutes ces conditions if-else if, vous pouvez utiliser le nombre aléatoire comme index du nombre de tableaux.

private final static int REP = 100;
private final static int MAX = 10;
public static void main(String[] args) {

    Random rand = new Random(System.currentTimeMillis());

    int[] counts = new int[MAX];
    for(int i=0; i<REP; i++)
    {
        int n = rand.nextInt(MAX);
        counts[n]++;
    }

    for(int i=0; i<MAX; i++)
    {
        System.out.printf("The count for number %d is: %d \n", i, counts[i] );
    }
}
 0
Author: Petros Tsialiamanis, 2014-03-29 09:35:09