当前,对于我的大学项目,我们必须模拟一个彩票系统,或者说是“百万欧元”,因为我们给了它两个默认类:密钥类和迭代器类。我们无法以任何方式对其进行更改。
我想将键迭代器中的值与扫描整数数组进行比较,返回找到的多个匹配项。问题在于,每当我插入这些数字时,迭代器就会越界,因此我无法将两者进行比较。 这是我尝试做的,用数字(有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]);
}
}
我在游戏类中创建了一个键,并为星星和数字创建了迭代器,它们均以迭代器变量It1Storage
和It2Storage
的形式存储。
为了将插入的数字与密钥的数字进行比较,我应该继续使用我的方法但对其进行修改还是采用其他方法?