保护方法中的变量Java的

时间:2018-05-19 21:10:45

标签: java arrays variables

我有一个像这样的主要方法。

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方法在同一个类中,在迭代结束时,值会发生变化。我想在每次迭代开始时重新初始化为原始值。我怎样才能做到这一点。我需要将它放在单独的类

2 个答案:

答案 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