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.

Enunciado: Ejercicio Recuperación - Problema 3. Procesamiento de nómin… · Programació II UDL 2010

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 ›

Más ejercicios de Ficheros en Java: texto secuencial y acceso directo binario