// Método que debería devolver verdadero si todos los números en un array son positivos, falso en caso contrario // Entrada -> un array con 2, 4, 6, -8, 1 // Debería devolver false public static boolean sonTodosPositivos(int[] array) { boolean resultado = false; for (int i = 0; i < array.length; i++) { if (array[i] >= 0) { resultado = false; }else{ resultado=true; } } return resultado; }
El código que proporcionas tiene un problema de lógica. Estás estableciendo `resultado` a `false` cada vez que encuentras un número positivo, y a `true` cada vez que encuentras un número negativo. Esto significa que si hay al menos un número negativo en el array, `resultado` se establecerá en `true` y se devolverá, lo que es incorrecto. Aquí te dejo una versión corregida del método: ```java public static boolean sonTodosPositivos(int[] array) { for (int i = 0; i < array.length; i++) { if (array[i] < 0) { return false; // si encuentra un número negativo, devuelve false inmediatamente } } return true; // si no encuentra ningún número negativo, devuelve true } ``` En este código, si encuentra un número negativo, devuelve `false` inmediatamente. Si no encuentra ningún número negativo después de recorrer todo el array, devuelve `true`. También puedes utilizar una versión más concisa del método utilizando la función `Arrays.stream()` y `allMatch()` de Java 8: ```java import java.util.Arrays; public static boolean sonTodosPositivos(int[] array) { return Arrays.stream(array).allMatch(n -> n >= 0); } ``` Esta versión utiliza un flujo de datos para recorrer el array y verifica si todos los números son mayores o iguales a 0. Si encuentra algún número que no cumpla esta condición, devuelve `false`. Si no encuentra ningún número que no cumpla esta condición, devuelve `true`.