Мне нужен метод 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}
. Хороший он мог бы показывать тебя 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++;
}
Надеялся, что оно ты функционирует ;) Привет
Считай только позитивы 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;
}