typestar

grade_report.java en Java

Un libro de calificaciones en un archivo: promedios, letras y un resumen.

// grade_report: promedios por estudiante, notas en letra y resumen del grupo
import java.util.LinkedHashMap;
import java.util.stream.IntStream;

class GradeReport {
    public static void main(String[] args) {
        var scores = new LinkedHashMap<String, int[]>();
        scores.put("Ada", new int[] { 92, 88, 95 });
        scores.put("Alan", new int[] { 78, 85, 80 });
        scores.put("Grace", new int[] { 90, 91, 86 });
        scores.put("Edsger", new int[] { 70, 65, 74 });

        System.out.println("student    avg  grade");
        var classTotal = 0.0;
        for (var entry : scores.entrySet()) {
            var avg = IntStream.of(entry.getValue()).average().orElse(0);
            classTotal += avg;
            System.out.printf("%-9s %5.1f  %s%n",
                              entry.getKey(), avg, letter(avg));
        }
        System.out.printf("%nclass average %.1f%n",
                          classTotal / scores.size());
    }

    static String letter(double avg) {
        if (avg >= 90) return "A";
        if (avg >= 80) return "B";
        if (avg >= 70) return "C";
        return "F";
    }
}

Cómo funciona

  1. Un LinkedHashMap de arreglos de puntajes conserva el orden de inserción.
  2. IntStream.average colapsa los puntajes de cada estudiante.
  3. El helper letter mapea promedios; printf alinea la tabla.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
31
Caracteres a escribir
911
Tokens
272
Ritmo de tres estrellas
90 tpm

Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 181 segundos.

Escribe este fragmento

Paso 2 de 2 en Bis; paso 29 de 29 en Fundamentos del lenguaje.

← Anterior