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
- Un
LinkedHashMapde arreglos de puntajes conserva el orden de inserción. IntStream.averagecolapsa los puntajes de cada estudiante.- El helper
lettermapea promedios;printfalinea la tabla.
Palabras clave y builtins usados aquí
classdoubleforifintnewpublicreturnstaticvarvoid
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.
Paso 2 de 2 en Bis; paso 29 de 29 en Fundamentos del lenguaje.