Я пытаюсь сравнить два массива внутри для циклов - PullRequest
1 голос
/ 19 февраля 2020

Я создаю программу лотереи, в которой я хочу сравнить выигрышные номера с номерами игроков, и, если они совпадают, они выигрывают приз. Я использовал count для этого в методе match (), но при попытке сравнить два массива - getWinningNumbers () и getNumbers (), которые принадлежат другим классам PLAYER и WINNINGNUMBERS, возникает ошибка. Я получаю ошибку «фактические и формальные параметры различаются по длине», но я не уверен, как это исправить. Я использую связанные списки также впервые. Любая помощь будет принята с благодарностью.

Часть кода, с которой у меня возникают проблемы, находится в методе match () в классе лотереи.

public void matches() {
        PLAYER currentPlayer = pHead;
        int count = 0;
        for(int i = 0; i<6; i++) {
            for(int j = 0; j< 6; j++) {
                if (win.getWinningNumbers(i) == currentPlayer.getNumbers(j)) {
                    count++;
                }
            }
        }

``````````````````````````````````````````````````````````````````````````

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Измените следующий фрагмент в matches():

if (win.getWinningNumbers(i) == currentPlayer.getNumbers(j)) {
                count++;
            }

На

if (win.getWinningNumbers()[i] == currentPlayer.getNumbers()[j]) {
                count++;
            }
0 голосов
/ 19 февраля 2020

Может быть, этот пример вам немного поможет:

List<Integer> winningNumber = new LinkedList<>(Arrays.asList(3, 9, 15, 1, 11, 18));
List<Integer> playerNumbers = new LinkedList<>(Arrays.asList(2, 8, 15, 7, 11, 9));

matches(winningNumber, playerNumbers);

private static void matches(List<Integer> winningNumbers, List<Integer> playerNumbers) {
    if(winningNumbers.size() != playerNumbers.size()) {
        System.out.println("winning numbers and player numbers differ in size");
    }
    int counter = 0;
    for(int i = 0; i < winningNumbers.size(); i++) {
        if(winningNumbers.get(i) == playerNumbers.get(i)) {
            counter++;
        }
    }
    System.out.println("Number of matches in position: " + counter);

    // if the position of match is not important
    long matches = winningNumbers.stream()
            .filter(playerNumbers::contains)
            .count();
    System.out.println("Number of matches: " + matches);
}

Количество совпадений в позиции: 2

Количество совпадений: 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...