Как сделать функцию, которая фильтрует положительные числа? Ява

Мне нужен метод dameSoloPositivos, чтобы вернуть меня array в длину, равную столько положительных чисел, сколько есть.

У меня есть метод contarNegativos, который сообщает мне, сколько отрицательных чисел содержится в array:

public static int contarNegativos(int [] arr){
  int resultado = 0;
  for(int i = 0; i < arr.length; i++){
    if(arr[i] < 0){
      resultado++;
    }
  }
  return resultado;
}

И это метод, но я не могу заставить его работать вообще:

static int[] dameSoloPositivos (int[] arr){
  int[] aux=new int[arr.length-contarNegativos(arr)];
  int j = 0;
  for(int i = 0; i < arr.length; i++){
    if(arr[i] >= 0){
      aux[j]=aux[i];
      j++;
    }
  }
  return aux;
}

Например:

  • С учетом arr={-1} возврата {}.
  • С учетом arr={1,-2,-5,6} возврата {1,6}.
  • С учетом arr={2} возвращаем {2}.
  • [1 119]
2
задан 29.11.2019, 04:27
2 ответа

Хороший он мог бы показывать тебя cГіdigos, чтобы оптимизировать твой, но я сфокусируюсь в появлении, где находится твоя ошибка:

if(arr[i] >= 0){
    aux[j]=aux[i]; // Exactamente aqui esta el error
    j++;
}

ты выравниваешь aux = aux то, что должно бы быть aux = arr из следующей формы:

if(arr[i] >= 0){
    aux[j]=arr[i];
    j++;
}

Надеялся, что оно ты функционирует ;) Привет

2
ответ дан 01.12.2019, 10:40
  • 1
    Спасибо!!, который я бью козырем глупее – aprendiendo 28.11.2019, 23:29
  • 2
    Не беспокойся всем я перемещаю нас немного así когда-нибудь XDXD. – Israel-ICM 28.11.2019, 23:29

Считай только позитивы asГ - ты предотвращаешь вычитание, agrГ©galos в список и позже используй метод intList.toArray(intArray)

static int[] dameSoloPositivos (int[] arr){
List<Integer> positivos = new ArrayList<>();

    for(int i = 0; i < arr.length; i++){
        if( arr[i] > 0 ) {
            positivos.add(arr[i]);
        }
    }
    int[] arr_positivos = positivos.toArray(new int[positivos.size()]);
    return arr_positivos;
}
1
ответ дан 01.12.2019, 10:40