Как я могу сделать размер моего массива результатом того, что возвращает мой цикл for? - PullRequest
0 голосов
/ 24 мая 2018

Мне нужно, чтобы размер моего массива был один раз повторен в цикле for.Прямо сейчас говорится, что мой возвращаемый массив не найден.

public int[] method(int[] a, int red, int yellow) {

for (int i = 0; i < length; i++) { 
     int[] array = new int[i];

        array[i] = a[i]; 


}

Ответы [ 3 ]

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

Вы должны определить массив вне цикла.Как только переменная, объявленная внутри цикла, она ограничена, она будет ограничена циклом.

Если вы думаете, что это будет иметь смысл в соответствии с вашей логикой, вы можете попробовать следующий код.Однако с этим IndexOutOfBoundException вы столкнетесь с другой проблемой.Предлагаю отлаживать и больше работать над вашей логикой

    int[] array = null;
    for (int i = 0; i < a.length; i++) {
        array = new int[i];
        if (a[i] >= red && a[i] <= yellow) {
            array[i] = a[i];

        }

    }
    return array;
0 голосов
/ 24 мая 2018

попробуйте это. Вы также не можете вернуть массив внутри цикла for

public static void main (String arg []) {

    int[] a={1,2,3,4,5,6};
    method(a,1,4);
}
public static void method(int[] a, int x, int y) {
    int[] array = new int[a.length];
    for (int i = 0; i < a.length; i++) { 

         if (a[i] >= x && a[i] <= y) { 
            array[i] = a[i]; 

         }

      }
    System.out.println(Arrays.toString(array)); 
}

}

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

Поскольку вы определили array внутри цикла for, область действия массива переменных заканчивается, когда заканчивается цикл for.Вот почему компилятор не может найти переменную array при возврате.Попробуйте сместить переменную array перед циклом for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...