Защита переменной в методе |Джава - PullRequest
0 голосов
/ 20 мая 2018

У меня есть такой основной метод`

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};`

и цикл в основном методе

 while (treenum < numofTrees) {
                int tobeChecked = treenum;
                if (check(treenum, a, b,c,d) == true)
                    count++;


                treenum++;
            }

метод проверки находится внутри того же класса, в конце итерациизначения меняются.Я хочу повторно инициализировать исходное значение в начале каждой итерации.Как мне это сделать.Нужно ли поместить его в отдельный класс

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Заставьте 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.

0 голосов
/ 20 мая 2018

Вы можете объявить массивы a,b,c,d в цикле while, чтобы они повторно инициализировались в начале каждой итерации

  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++;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...