大学项目中的彩票迭代器越界

时间:2018-11-15 10:24:41

标签: java arrays iterator compare indexoutofboundsexception

当前,对于我的大学项目,我们必须模拟一个彩票系统,或者说是“百万欧元”,因为我们给了它两个默认类:密钥类和迭代器类。我们无法以任何方式对其进行更改。

我想将键迭代器中的值与扫描整数数组进行比较,返回找到的多个匹配项。问题在于,每当我插入这些数字时,迭代器就会越界,因此我无法将两者进行比较。 这是我尝试做的,用数字(有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是Iterator的副本,其中包含键类的numbers数组的值。 NumArray是包含所有扫描仪输入数字的数组。 if表示如果Iterator具有下一个Integer,则仅应转到下一个Integer。但是,我看不到这种情况。

这是默认的Iterator类和Key类。 迭代器:

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]);
}   
}

我在游戏类中创建了一个键,并为星星和数字创建了迭代器,它们均以迭代器变量It1StorageIt2Storage的形式存储。 为了将插入的数字与密钥的数字进行比较,我应该继续使用我的方法但对其进行修改还是采用其他方法?

0 个答案:

没有答案