Skip to content

Symulator LOTTO – JAVA

Kolejne zadania wykonane w ramach ćwiczeń tego, co nauczyłem się na kursie. Tym razem symulator LOTTO – Java.

Założenia

Jak zawsze na początek, kilka założeń. Przede wszystkim symulujemy prawdziwą grę w LOTTO, dlatego nasz program na losować 6 liczb z zakresu od 1 do 49. Oczywiście, my jako użytkownik musimy najpierw wskazać nasze trafienia. Potem program musi sprawdzić, ile liczb trafiliśmy. O czym trzeba pamiętać?

  • komputer musi wylosować 6 różnych liczb
  • użytkownik musi wskazać 6 różnych liczb

Symulator LOTTO – Java

Przechodzimy do programu :). Najpierw w metodzie main wywołujemy metodę (draw). Jako argument podajemy stałą LOTTO, która przetrzymuje informacje, ile liczb ma być losowanych. Wynik z metody to tablica intów, która zapisana jest w draw. Następnie wywoływana jest metoda myNums, która zwraca tablicę userNums.

Na koniec w println wywołujemy metodę winNum, w które porównamy wartości z dwóch tablic – draw i userNums.

public static void main(String[] args) {
        int[] draw = draw(LOTTO);
        System.out.println("Wylosowane liczby to: " + Arrays.toString(draw));
        int[] userNums = myNums(LOTTO);
        System.out.println("Twoje liczby to: " + Arrays.toString(userNums));
        System.out.println("Trafiłeś: " + winNum(draw, userNums));

W metodzie draw najpierw zwalniamy blokadę. Potem tworzymy ArrayListe numbers. W pętli for wypełniamy ją kolejnymi liczbami całkowitymi od 1 do 49. Następnie tasujemy je za pomocą (Collections.shuffle). Dzięki temu mamy w liście liczby z zakresu, ale randomowo ustawione.

Tworzymy nową tablicę, która będzie składać się z 6 elementów. W kolejnej pętli zapisujemy do niej pierwszych sześć liczb z listy. W takiej sytuacji pobieramy tylko unikalne liczby. Na koniec zwracamy tablicę.

 static int[] draw(int length) {
        System.out.println("Bęben maszyny losującej jest pusty, następuje zwolnienie blokady...");
        ArrayList<Integer> numbers = new ArrayList<>();
        for (int i = 1; i < 50; i++) {
            numbers.add(i);
        }

        Collections.shuffle(numbers);

        int[] draw = new int[length];
        for (int i = 0; i < draw.length; i++) {
            draw[i] = numbers.get(i);
        }

        return draw;
    }

W metodzie myNums tworzymy nową tablicę składającą się z 6 elementów. Będziemy w niej zapisywać liczby, które użytkownik wpisze w terminalu poprzez wywołaną metodę yourChoice. Musimy tutaj sprawdzić dwie rzeczy:

  • czy liczba jest z zakresu
  • czy użytkownik podał już taką liczbę

Do kontroli tego, czy warunki są spełnione stosujemy argCheck1 i argCheck2. Jeśli oba typy zostaną zmienione na true, to pętla do while się zakończy, a do liczby w tablicy zostanie przypisana wybrana przez użytkownika liczba.

static int[] myNums(int length) {
        int[] myNums = new int[length];
        int tempNum;
        boolean argCheck1 = false;
        boolean argCheck2 = false;
        for (int i = 0; i < length; i++) {
            do {
                argCheck1 = false;
                argCheck2 = false;
                tempNum = yourChoice(i);
                if (tempNum < 1 || tempNum > 49) {
                    System.out.println("Podana liczba jest spoza zakresu 1-49!");
                    argCheck1 = true;
                }
                for (int j = 0; j <= i; j++) {
                    if (tempNum == myNums[j]) {
                        argCheck2 = true;
                        System.out.println("Podałeś już taką liczbę.");
                    }
                }
            }

            while (argCheck1 == true || argCheck2 == true);
            myNums[i] = tempNum;
        }

        Arrays.sort(myNums);
        return myNums;
    }
static int yourChoice(int num) {
        Scanner scan = new Scanner(System.in);
        System.out.print("Podaj " + (num + 1) + " liczbę z zakresu 1-49: ");
        while (!scan.hasNextInt()) {
            System.out.print("Podaj liczbę całkowitą z zakresu 1-49: ");
            scan.next();
        }

        return scan.nextInt();
    }

Ostatnia metoda, w której porównujemy dwie tablice – liczby wylosowane przez komputer i liczby wskazane przez użytkownika. Do zliczenia liczby trafień wykorzystujemy zmienną hit. Jeśli po przeliterowaniu tablic, elementy są takie same, to hit zwiększa się o jeden.

static int winNum(int[] draw, int[] userNums) {
        int hit = 0;
        for (int i = 0; i < LOTTO; i++) {
            for (int j = 0; j < LOTTO; j++) {
                if (draw[i] == userNums[j]) {
                    hit += 1;
                }
            }
        }

        return hit;
    }

Tyle :)

Inne teksty z serii – JAVA!

Published inJAVASzkoła Programowania