Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Buscar y sumar en un array

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

¿Cuánto has gastado esta semana?

Apuntas lo que gastas en el bar cada día: 4, 7, 3, 9 y 5 euros.

Quieres saber tres cosas. ¿Cuánto has gastado en total? ¿Cuánto gastas de media? ¿Cuál fue tu día más caro?

Con un array y un bucle lo averiguas en pocas líneas. Funciona igual con 5 días que con 5000.

Palabras clave

PalabraQué significaEjemplo
AcumuladorUna variable que empieza en 0 y va sumando valores.total = total + spent[i];
MediaLa suma dividida entre cuántos valores hay.28 / 5 = 5,6
MáximoEl valor más grande de la lista.9
ContadorUna variable que sube de uno en uno cada vez que algo se cumple.count++;
BuscarMirar caja por caja hasta encontrar un valor.spent[i] == 3

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Sumar todos los valores

Creas un acumulador que empieza en 0. Es como una hucha vacía.

El bucle pasa por cada caja y mete su valor en la hucha. Al terminar, el acumulador tiene la suma.

Pruébalo: el gasto total

Código: java
public class Main {
    public static void main(String[] args) {
        int[] spent = {4, 7, 3, 9, 5};

        int total = 0;
        for (int i = 0; i < spent.length; i++) {
            total = total + spent[i];
        }

        System.out.println("Has gastado " + total + " euros.");

        // Cambia un valor del array y mira el total.
    }
}

Ejemplo resuelto: la suma vuelta a vuelta

Vuelta (i)CajaTotal antesTotal después
0404
17411
231114
391423
452328

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La media

La media es la suma entre el número de cajas: 28 entre 5 son 5,6 euros al día.

Cuidado: si divides dos int, Java quita los decimales y sale 5. En la lección de convertir entre tipos viste el arreglo: (double) delante de la suma.

Pruébalo: la media diaria

Código: java
public class Main {
    public static void main(String[] args) {
        int[] spent = {4, 7, 3, 9, 5};

        int total = 0;
        for (int i = 0; i < spent.length; i++) {
            total = total + spent[i];
        }

        // Sin (double), la división entera daría 5.
        double average = (double) total / spent.length;
        System.out.println("Gastas de media " + average + " euros.");
    }
}

El valor más grande

Para el máximo, apuntas el primer valor como el mejor hasta ahora.

Después miras el resto. Si encuentras uno mayor, ese pasa a ser el mejor.

Al final, la variable guarda el máximo.

Ejemplo resuelto: buscar el máximo

Vuelta (i)CajaMejor antesMejor después
Inicio--4
1747
2377
3979
4599

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pruébalo: el día más caro

Código: java
public class Main {
    public static void main(String[] args) {
        String[] days = {"lunes", "martes", "miércoles", "jueves", "viernes"};
        int[] spent = {4, 7, 3, 9, 5};

        int best = 0;
        for (int i = 1; i < spent.length; i++) {
            if (spent[i] > spent[best]) {
                best = i;
            }
        }

        // Guardamos la posición, así sabemos el valor y el día.
        System.out.println("Gastaste más el " + days[best]
            + ": " + spent[best] + " euros.");
    }
}

Empieza por el primer valor, no por 0

Advertencia

Si empiezas el máximo en 0 y todos los valores fueran negativos, ganaría el 0 aunque no esté en la lista. Empezar con la primera caja siempre funciona.

Contar y buscar

Para contar, pones un if dentro del bucle y subes un contador cuando se cumple.

Para buscar, el if mira si la caja vale lo que buscas. Si es así, devuelves su posición. Si el bucle acaba sin encontrarlo, devuelves -1, porque ninguna posición vale -1.

Pruébalo: contar y buscar

Código: java
public class Main {
    public static void main(String[] args) {
        int[] spent = {4, 7, 3, 9, 5};

        // Cuántos días gastaste más de 5 euros.
        int count = 0;
        for (int i = 0; i < spent.length; i++) {
            if (spent[i] > 5) {
                count++;
            }
        }
        System.out.println("Días de más de 5 euros: " + count);

        // Qué día gastaste justo 3 euros. -1 significa que ninguno.
        int found = -1;
        for (int i = 0; i < spent.length; i++) {
            if (spent[i] == 3 && found == -1) {
                found = i;
            }
        }
        System.out.println("Posición del gasto de 3 euros: " + found);
    }
}

La lección continúa

5 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.