Ejercicio Recuperación - Problema 3. Procesamiento de nómin… · Programació II UDL 2010
Tema: Ficheros en Java: texto secuencial y acceso directo binario · Del examen Exámenes de Recuperación y Tercer Parcial de Programación 2 (Curso 2010/2011) (2010)
Enunciado
Recuperación - Problema 3. Procesamiento de nóminas por categoría
Se dispone de un fichero de texto secuencial cuyas líneas contienen información laboral de empleados con el siguiente formato:
Nombre, Categoría, SueldoBase, Complemento
El campo Categoría únicamente puede tomar uno de los tres valores: Base, Media o Alta. Por ejemplo:
José María, Base, 1500.0, 800.0
María Luisa, Media, 2000.0, 1200.0
Luisa Fernanda, Alta, 8000.5, 10000.0
...
Se pide desarrollar un programa completo en Java que lea un fichero con dicha estructura (asumiendo formato correcto y la existencia de al menos un registro por cada categoría) y calcule e imprima la media de retribución total ( sueldo base + complementos) para cada una de las tres categorías de trabajadores.
Nota: Se permite hacer uso de la clase StatVar desarrollada en el Problema 2.

Solución
Según los criterios oficiales de corrección
Se pide desarrollar un programa completo en Java que lea un fichero con dicha estructura y calcule e imprima la media de retribución total (sueldo base + complementos) para cada una de las tres categorías de trabajadores.
Solución: ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.StringTokenizer; public class ProcesaNominas { public static void main(String[] args) { String fileName = "nominas.txt"; StatVar statsBase = new StatVar(); StatVar statsMedia = new StatVar(); StatVar statsAlta = new StatVar(); try (BufferedReader in = new BufferedReader(new FileReader(fileName))) { String line; while ((line = in.readLine()) != null) { if (line.trim().isEmpty()) continue; // Usamos ',' como delimitador StringTokenizer st = new StringTokenizer(line, ","); String nombre = st.nextToken().trim(); String categoria = st.nextToken().trim(); double sueldoBase = Double.parseDouble(st.nextToken().trim()); double complemento = Double.parseDouble(st.nextToken().trim()); double sueldoTotal = sueldoBase + complemento; if (categoria.equalsIgnoreCase("Base")) { statsBase.add(sueldoTotal); } else if (categoria.equalsIgnoreCase("Media")) { statsMedia.add(sueldoTotal); } else if (categoria.equalsIgnoreCase("Alta")) { statsAlta.add(sueldoTotal); } } System.out.println("Media categoría Base: " + statsBase.getMean()); System.out.println("Media categoría Media: " + statsMedia.getMean()); System.out.println("Media categoría Alta: " + statsAlta.getMean()); } catch (IOException e) { System.err.println("Error al procesar el fichero: " + e.getMessage()); } } } ```
La explicación paso a paso, hecha con IA, es Premium. Premium
Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.
‹ Problema 2 · 2011 · Ejercicio Tercer Parcial - Problema 1. Cálculo de áreas de… · 2010 ›