public class Estudiantes { public static void main(String[] args) { java.util.Scanner teclado = new java.util.Scanner(System.in); System.out.print("Cantidad de estudiantes (n): "); int n = teclado.nextInt(); // Crear el arreglo de n referencias a estudiantes Estudiante estudiantes[] = new Estudiante[n]; // Crear y leer los n estudiantes for ( int i = 0; i < estudiantes.length; ++i ) { System.out.println("\nEstudiante " + (i + 1) + ":"); estudiantes[i] = new Estudiante(); estudiantes[i].leer(); } // Imprimir los n estudiantes leidos for ( int i = 0; i < estudiantes.length; ++i ) System.out.println((i + 1) + ": " + estudiantes[i]); // Calcular el promedio de los ppm de todos los estudiantes double sumaPPMs = 0.0; for ( int i = 0; i < estudiantes.length; ++i ) sumaPPMs += estudiantes[i].ppm; System.out.printf("\nPromedio de ppms: %.2f\n" , sumaPPMs / estudiantes.length ); } } class Estudiante { String carnet = ""; String nombre = ""; double ppm = 0.0; // promedio ponderado de matricula boolean presente = false; public void leer() { java.util.Scanner teclado = new java.util.Scanner(System.in); System.out.print("Carnet: "); teclado.skip("\\s*"); carnet = teclado.nextLine(); System.out.print("Nombre: "); nombre = teclado.nextLine(); System.out.print("Promedio matricula: "); ppm = teclado.nextDouble(); System.out.print(nombre + " vino a clases hoy?: "); presente = teclado.nextBoolean(); } public String toString() { return String.format("%s: %s (%.2f) %s vino a clases" , carnet, nombre, ppm, presente ? "" : "no"); } }