Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Proyecto] No logro encontrar el error o que me falta Proyecto Conversor

Tengo el siguiente codigo y todo funciona bien a excepcion de la ultima parte que es la conversion de Fahrenheit a Celsius porque no muestra el valor de la conversion y se va directamente al final donde escoges si quieres continuar usando el programa o no.

Les solicito su ayuda y que me expliquen por favor cual es mi error y que me falta en el codigo.

Muchas gracias por la atencion prestada

Eduardo Garavito

        if (choice == 1) {
            DecimalFormat formatearTemp = new DecimalFormat("0.00");
            boolean seguirPrograma = true;

            while (seguirPrograma) {
                String[] opcion = { "Celsius a Fahrenheit", "Fahrenheit a Celcius" };
                String cambio = (String) JOptionPane.showInputDialog(null, "Elige una opcion", "Conversor temperatura",
                        JOptionPane.QUESTION_MESSAGE, null, opcion, 0);
                String input1 = JOptionPane.showInputDialog(null, "Ingrese el valor a convertir");
                
                double valor = 0;
                
                try {
                    valor = Double.parseDouble(input1);
                } catch (NumberFormatException e) {
                    JOptionPane.showMessageDialog(null, "Valor no valido");
                    System.exit(0);
                }
        
                double resultado = 0;
                
                if (cambio.equals("Celsius a Fahrenheit")) {
                    resultado = ( valor * (9/5) + 32;
                    JOptionPane.showMessageDialog(null, valor + " grados celsius son " + formatearTemp.format(resultado) + " grados fahrenheit");
                    
                } else if (cambio.equals("Fahrenheit a Celsius")) {
                    resultado = (valor - 32) * (5/9);
                    JOptionPane.showMessageDialog(null, valor + " grados fahrenheit son " + formatearTemp.format(resultado) + " grados celsius");
                }
                
                int continuar = JOptionPane.showConfirmDialog(null, "Desea seguir usando el programa", "Confirma",JOptionPane.YES_NO_OPTION);
                
                if (continuar == JOptionPane.NO_OPTION) {
                    seguirPrograma = false;
                    JOptionPane.showMessageDialog(null, "Programa finalizado");
                }
            }
        }
    }
}

2 respuestas

¡Hola Eduardo Garavito!

Gracias por compartir tu código y explicar tu problema. Parece que el error está en las fórmulas de conversión de grados Celsius a Fahrenheit y viceversa. En lugar de usar las constantes 9/5 y 5/9, debes usar 9.0/5.0 y 5.0/9.0 para obtener resultados precisos.

Aquí tienes el código corregido:

if (choice == 1) {
    DecimalFormat formatearTemp = new DecimalFormat("0.00");
    boolean seguirPrograma = true;

    while (seguirPrograma) {
        String[] opcion = { "Celsius a Fahrenheit", "Fahrenheit a Celsius" };
        String cambio = (String) JOptionPane.showInputDialog(null, "Elige una opcion", "Conversor temperatura",
                JOptionPane.QUESTION_MESSAGE, null, opcion, 0);
        String input1 = JOptionPane.showInputDialog(null, "Ingrese el valor a convertir");
        
        double valor = 0;
        
        try {
            valor = Double.parseDouble(input1);
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Valor no valido");
            System.exit(0);
        }

        double resultado = 0;
        
        if (cambio.equals("Celsius a Fahrenheit")) {
            resultado = (valor * (9.0/5.0)) + 32;
            JOptionPane.showMessageDialog(null, valor + " grados Celsius son " + formatearTemp.format(resultado) + " grados Fahrenheit");
            
        } else if (cambio.equals("Fahrenheit a Celsius")) {
            resultado = (valor - 32) * (5.0/9.0);
            JOptionPane.showMessageDialog(null, valor + " grados Fahrenheit son " + formatearTemp.format(resultado) + " grados Celsius");
        }
        
        int continuar = JOptionPane.showConfirmDialog(null, "Desea seguir usando el programa", "Confirma",JOptionPane.YES_NO_OPTION);
        
        if (continuar == JOptionPane.NO_OPTION) {
            seguirPrograma = false;
            JOptionPane.showMessageDialog(null, "Programa finalizado");
        }
    }
}

Con estos cambios, deberías obtener los resultados de conversión correctos y el programa debería funcionar como se espera.

Espero que esta solución te sea útil. Si tienes alguna otra pregunta, no dudes en preguntar. ¡Buena suerte con tu proyecto de conversión de temperatura!

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)

Muchas gracias por la respuesta pero el problema no esta en las formulas y parece que no se entendio el problema.

el resultado de la operacion no se muestra y salta de una vez al menu de seleccionar si quiere continuar usando el prpograma o no. el problema es que no muestra el resultado.

Muchas gracias por la ayuda y estare pendiente de tu respuesta.