итератор лотереи в университетском проекте - PullRequest
0 голосов
/ 15 ноября 2018

В настоящее время для моего университетского проекта мы должны смоделировать систему лотереи, или «миллионы евро», для этого нам даны два класса по умолчанию: класс ключа и класс итератора. Мы не можем изменить их каким-либо образом.

Я хотел сравнить значения из ключевого итератора с массивом отсканированных целых чисел, возвращая количество найденных совпадений. Проблема в том, что всякий раз, когда я вставляю эти числа, итератор выходит за пределы, и поэтому я не могу сравнивать оба. Вот что я пытался сделать с цифрами (5 цифр и 2 звезды - как евромиллионы):

    public int compareNums() {                          
    int n = 0;
    int numberOfMatches = 0;

    It2Storage.reinitialize();

    while (n < 5) {
        if (It2Storage.hasNextInt() && It2Storage.nextInt() == numArray[n]) {
            numberOfMatches++;
            n++;
            It2Storage.reinitialize();
        }else if (((It2Storage.hasNextInt()) && (It2Storage.nextInt() != numArray[n]))){
            System.out.print(It2Storage.nextInt());
        }

            n++;
            It2Storage.reinitialize();  

        }
    return numberOfMatches;
    }

It2Storage - это копия Итератора, содержащая значения массива чисел класса ключей. NumArray - это массив, содержащий все входные номера сканера. Если указано, что итератор должен переходить к следующему целому числу, только если у него есть следующее целое число. Однако я не вижу, чтобы это произошло.

Здесь по умолчанию Iterator Class и Key class. Итератор:

public class IteratorInt {

private int countNumbers,currNumber;
private int [] numbers;


public IteratorInt(int[] numbers) {
    countNumbers=numbers.length;
    currNumber=0;
    this.numbers=numbers;
}
/ 
public IteratorInt(int[] numbers, int nElems) {
    countNumbers=nElems;
    currNumber=0;
    this.numbers=numbers;
}

public boolean hasNextInt() {
    return currNumber < countNumbers;
}

public int nextInt() {
    return numbers[currNumber++];
}


public void reinitialize() {
    currNumber=0;
}   
}

А вот и ключ

public class Key {

private static final int NUMBERGAMES =10;


private static final int [][]NUMBERS = {{4,5,28,50,11},{4,8,18,44,13},{1,2,28,48,49},{2,15,22,33,11},{10,20,30,50,40},{4,15,21,32,11},{2,5,18,20,11},{6,7,28,50,14},{1,5,33,50,11},{4,6,28,45,10}};


private static final int [][]STARS = {{4,5},{4,6},{4,10},{9,10},{1,5},{6,7},{1,11},{5,8},{9,10},{1,12}};


private static  int CURRENTGAME=0;


private int idGame;


public Key() {
    idGame=CURRENTGAME;
    CURRENTGAME= ++CURRENTGAME % NUMBERGAMES;
}


public IteratorInt criaIteratorNumbers() {        //creates numbers iterator
    return new IteratorInt(NUMBERS[idGame]);
}


public IteratorInt criaIteratorStars() {            //creates stars iterator
    return new IteratorInt(STARS[idGame]);
}   
}

Я создал ключ в своем игровом классе и создал итераторы для звезд и чисел, которые я сохранил в виде переменных итераторов It1Storage и It2Storage. Чтобы сравнить введенные числа с числами ключа, я должен продолжать использовать свой метод, но изменить его, или выбрать другой подход?

...