我有一个像这样的主要方法。
public static void main(String[] args) {
int numofTrees = 3;
intjumpingCapacity = 6;
int a[] = {1,2,3,4};
int b[] = {1,2,3,4};
int c[] = {1,2,3,4};
int d[] = {1,2,3,4};`
和main方法中的循环
while (treenum < numofTrees) {
int tobeChecked = treenum;
if (check(treenum, a, b,c,d) == true)
count++;
treenum++;
}
check方法在同一个类中,在迭代结束时,值会发生变化。我想在每次迭代开始时重新初始化为原始值。我怎样才能做到这一点。我需要将它放在单独的类
中答案 0 :(得分:2)
您可以在while循环中声明数组a,b,c,d
,以便在每次迭代开始时重新初始化
while (treenum < numofTrees) {
int a[] = {1,2,3,4};
int b[] = {1,2,3,4};
int c[] = {1,2,3,4};
int d[] = {1,2,3,4};`
int tobeChecked = treenum;
if (check(treenum, a, b,c,d) == true)
count++;
treenum++;
}
答案 1 :(得分:0)
使check()
与每个数组的副本一起使用。
一种方法是使用Arrays.copy()
将副本传递给方法:
if (check(treenum, Arrays.copyOf(a, a.length), Arrays.copyOf(b, b.length), Arrays.copyOf(c, c.length), Arrays.copyOf(d, d.length)))
或在check()
内制作副本。
您可以通过创建辅助方法使代码更具可读性:
private static int[] copy(int[] original) {
return Arrays.copyOf(original, original.length);
}
然后改为:
if (check(treenum, copy(a), copy(b), copy(c), copy(d)))
另请注意,从== true
条件中删除了多余的if
。