En este video, refactorizaremos nuestro método principal y extraeremos un nuevo método para calcular la hipoteca.
📌 La idea:
main queda más corto y legibleRefactorizar significa:
Cambiar la estructura del código sin cambiar su comportamiento.
El programa hace lo mismo… pero el código queda más limpio y mantenible.
Después de nuestro método principal, definiremos un nuevo método public static.
📌 ¿Cuál debe ser el tipo de retorno?
Debe ser un valor double, porque es el tipo que usamos para almacenar la hipoteca.
Así que el método se llamará:
calcularHipodouble¿Qué parámetros necesitamos?
principal)InteresAnual) (porque el interés mensual se calcula a partir del anual)anos) (de ahí sacamos el número de pagos)Esta línea es larga… así que la partimos para ver todo bien.
mainAhora necesitamos mover la lógica para calcular la hipoteca desde main a este nuevo método.
📌 Atajo:
Cortamos y pegamos… y aparece lo normal:
✅ problemas de compilación al inicio.
No tenemos:
Porque esas variables estaban en main.
Entonces las traemos al método.
Aquí es donde calculamos los pagos:
Cortamos esa línea y la llevamos al nuevo método.
📌 Nota: como es una sola línea, no necesitamos llaves extras ni cosas raras.
En el método principal definimos constantes como:
Ambas se usan para calcular la hipoteca, así que las movemos también al método nuevo.
Eso baja el peso de main.
Volvemos al inicio:
Cortamos esa línea y la llevamos al método.
De nuevo: una sola sentencia, entonces no metemos llaves innecesarias que ensucien el código.
Aquí está el método con:
public static double calcularHipo(int principal,
float InteresAnual,
byte anos) {
final byte meses = 12;
final byte porcentaje = 100;
float numeroPagos = anos * meses;
float mesInteres = InteresAnual / porcentaje / meses;
double hipo = principal
*(mesInteres * Math.pow(1 + mesInteres, numeroPagos))
/(Math.pow(1 + mesInteres, numeroPagos) - 1);
return hipo;
}Ahora sí:
✅ esto compila.
Pero en la vida real, cuando uno está pegando código, pasan cosas raras…
y aquí viene el error que te salió.
Math.powMira este código (este es el error que quieres mostrar):
public static double calcularHipo(int principal,
float InteresAnual,
byte anos) {
final byte meses = 12;
final byte porcentaje =100;
float numeroPagos = anos * meses;
float mesInteres = InteresAnual / porcentaje / meses;
double hipo = principal
*(mesInteres * Math.pow(1 + mesInteres, numeroPagos))
/(Math.pow(1 + /Users/dannacruz/Library/CloudStorage/GoogleDrive-dlcruzr@unal.edu.co/Mi unidad/CursosUNAL/Programacion/1_U_JAVA_1/CLASE 4_ CLEAN CODING/CC_4/CC 3CrearMetodos.txtmesInteres, numeroPagos) - 1);
return hipo;📌 Esto rompe todo porque Java intenta leer esa ruta como si fuera parte de una expresión matemática.
La corrección es simple:
✅ debe decir:
y no tener texto raro en la mitad.
mainBien, ahora necesitamos llamar este método en nuestro método principal.
Llamamos a calcularHipo y le pasamos:
principalInteresAnualanoswhile¿Por qué aparece error?
Porque InteresAnual y anos fueron declaradas dentro del while.
📌 Entonces fuera del while no existen.
✅ Solución: mover su declaración al inicio del método.
Después de principal:
InteresAnual como float e inicializamos en 0anos como byte e inicializamos en 0📌 Ahora esas variables existen en todo main.
Cuando movemos esas variables al inicio:
las declaraciones dentro del while quedan en gris (redundantes).
✅ Las borramos.
Miramos el error de compilación.
En la línea donde intentamos formatear/imprimir la hipoteca:
📌 Olvidé guardar el retorno del método.
✅ Debemos crear la variable:
double hipoteca = calcularHipo(...)Antes:
mainAhora:
✅ toda la lógica para calcular hipoteca quedó en un solo método ✅ podemos reutilizarlo mañana en otro programa ✅ main queda más corto y más limpio
