Search code examples
javaarraysfill

Java lottery fill array


Here's the code:

 public void playMany() {

    for (int i = 0; i < lotteryNumbers.length; i++) {
        lotteryNumbers[i] = 0 + r.nextInt(9);

    }


    for (int i = 0; i < playersNumbers.length; i++) {

        playersNumbers[i] = 0 + r.nextInt(9);

    }

    for (int i = 0; i < lotteryNumbers.length; i++) {
        if (lotteryNumbers[i] == playersNumbers[i]) {
            winNum++;

        }
    }
   if (winNum == 0) {
        winningNum[0]++;
    }
    if (winNum == 1) {
        winningNum[1]++;
    }
    if (winNum == 2) {
        winningNum[2]++;
    }
    if (winNum == 3) {
        winningNum[3]++;
    }
    if (winNum == 4) {
        winningNum[4]++;
    }
    if (winNum == 5) {
        winningNum[5]++;
    }
   System.out.println(Arrays.toString(winningNum));
    }

}

With this method I want to play one draw of lottery with so many playerNumbers it takes until every index in playersNumbers and lotteryNumbers is the same. I want to save every result in winningNum so I can see how many times I hit 0, 1, 2, 3 etc. Now it plays only one time and stores it in the array. I tried with loops and boolean to play many times but I cant get it to work


Solution

  • try{
            int[] lotteryNumbers = new int[5];
            int[] playersNumbers = new int[5];
            int[] winningNum = new int[]{0, 0, 0, 0, 0, 0};
            int winNum = 0;
            Random r = new Random();
            for (int i = 0; i < lotteryNumbers.length; i++){
                    lotteryNumbers[i] = 0 + r.nextInt(9);
            }
            do{
                winNum = 0;
    
                for (int i = 0; i < playersNumbers.length; i++){
                    playersNumbers[i] = 0 + r.nextInt(9);
    
                }
    
                for (int i = 0; i < lotteryNumbers.length; i++){
                    if (lotteryNumbers[i] == playersNumbers[i]){
                        winNum++;
                    }
                }
                winningNum[winNum]++;
            }while(winNum != 5);
            System.out.println(Arrays.toString(winningNum));
        }catch(Exception e){
            e.printStackTrace();
        }
    

    I think this is what you were looking for, if you want some of it explained, please just leave a comment - note that the winningNum array is size 6 - because you can get 0-4 correct for each tieration + the final one where you win leaves 6 options