【发布时间】:2020-09-28 07:33:45
【问题描述】:
假设我有一个名为“Sequence”的类。这个类有一个实例变量private int[] tab。
还有一些方法可以创建此选项卡,例如:
public Sequence() {
this.tab = fillAnArray(drawsNumber(5, 20));
}
private int drawsNumber(int min, int max) {
if (min > max) {
throw new IllegalArgumentException("Wrong range");
}
return new Random().nextInt(max - min + 1) + min;
}
public int[] fillAnArray(int size) {
int[] arr = new int[size];
arr[0] = 1;
for (int i = 1; i < arr.length; i++) {
arr[i] = drawsNumber(arr[i - 1], arr[i - 1] + 10);
}
return arr;
}
现在,我想创建一个接受两个序列对象作为参数并返回相同选项卡元素数量的方法。所以,我创建了这样的方法:
public int howManyCommonElements(Sequence c1, Sequence c2) {
int i = 0, j = 0;
int counter = 0;
while (i < c1.tab.length && j < c2.tab.length) {
if (c1.tab[i] == c2.tab[j]) {
++counter;
} else if (c1.tab[i] < c2.tab[j]) {
++i;
} else {
++j;
}
}
return counter;
}
如何比较 c1.tab[i]、c2.tab[j] 等单个元素?
【问题讨论】:
-
不知道比较是什么意思?
c1.tab[i] == c2.tab[j]有什么问题?顺便说一句,这是您代码中的错误,如果选项卡具有公共元素,您的循环将永远不会完成。 -
哎呀,我只是尝试使用与 for 循环不同的东西。你说得对,我不知道我怎么看不到问题。
-
可以用 List 代替 int 数组吗?