Contexto

En sistemas financieros y de nómina, un error en el tipo de datos o un mal uso de los operadores produce fallas silenciosas graves:

  • Una división de dos variables enteras (int / int) descarta los decimales sin redondear, perdiendo horas o fracciones monetarias esenciales.
  • Olvidar la palabra clave final en una tarifa permite que cualquier línea posterior altere un valor que debía ser inmutable.
  • Confundir operadores lógicos puede dejar a un empleado sin su bonificación legítima o asignar fondos indebidos.

Como arquitecto de software, aprender a dominar los tipos de datos fundamentales y las operaciones básicas en Java es la base que te garantiza construir cálculos deterministas y confiables.

Consigna

Escribí el programa CalculadoraMetricas.java que realice el procesamiento salarial y operativo de un período de trabajo siguiendo las reglas descriptas.

1. Constantes y Variables

Declaralas dentro de main:

public class CalculadoraMetricas {
    public static void main(String[] args) {
        // Constantes inmutables
        final double TARIFA_HORA_BASE = 3200.0;
        final int HORAS_JORNADA_ESTANDAR = 8;
        final double BONO_DESEMPENO = 15000.0;

        // Variables del período
        int diasTrabajados = 20;
        int totalHoras = 175;
        char calificacion = 'A';
        boolean turnoNocturno = true;

        // Continuá con los cálculos...
    }
}

2. Puntos Clave a Considerar

  1. División entera vs con decimales: si hacés totalHoras / diasTrabajados, Java evalúa 175 / 20 como tipo int, resultando en 8 en lugar de 8.75. Debés forzar la conversión de al menos un operando: (double) totalHoras / diasTrabajados.
  2. Evaluación de reglas con cortocircuito: utilizá operadores && (AND) y || (OR) agrupando con paréntesis para que la prioridad de las condiciones exprese fielmente la regla de negocio.
  3. Casting explícito estrecho (narrowing): para simular el pago en efectivo entero, convertí el total decimal con (long) sueldoTotal. Documentá en un comentario por qué esta conversión pierde información.