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

Punto de vista

Quise hacer mas dinámico así que importe la clase scanner para pedirle a un usuario en especifico que ingresara el valor en Celsius. Así mismo use el método round de la clase Math para acceder a constantes y funciones matemáticas. Por otro lado no use los paréntesis sugeridos debido a que se me hizo innecesario esto debido a que el lenguaje de programación reconoce la ley de precedencia.

Sumado a lo anterior en el momento de la ejecución tuve problemas debido a que use float en vez de double y aprendí que en java los números decimales son tratados como double por defecto, y si deseas usar float, debes hacer una conversión explícita

Nota: Me gastaría si tienen una forma mas fácil de resolverlo me comenten

<--------------------------------codigo--------------------------->

import java.util.Scanner; class HelloWorld { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double celsius, fahre; System.out.println("*** El identificador de decimal es (.) ***"); System.out.println("Ingresa un numero en Celsius: "); celsius = sc.nextFloat();

    //Regla de precedencia
    fahre = celsius*1.8+32;
    int entero= (int)Math.round((double) fahre) ;
    
    //Mensaje formateado 
   String mensaje="El valor ingresado en Celsius fue %.2f  , al tranformar a fahrenheit dio %.2f y su redondeo en entero fue %d" ;
   String result= String.format(mensaje, celsius , fahre , entero);
  
      
     System.out.println(result);
     
}      

}

<---------------------------------codigo-------------------------------------->

2 respuestas

¡Hola Humberto!

Entiendo que estás teniendo algunos problemas con tu programa para convertir temperaturas de grados Celsius a Fahrenheit en Java. Veamos cómo podemos ayudarte.

Primero, es importante tener en cuenta que al utilizar la clase Scanner para obtener un valor en Celsius, es recomendable utilizar el método nextDouble() en lugar de nextFloat(), ya que los números decimales son tratados como double por defecto en Java.

Por otro lado, al utilizar el método round de la clase Math, es necesario realizar un casting explícito a double para asegurarnos de que el redondeo se realice correctamente.

Aquí te dejo un ejemplo modificado de tu programa:

import java.util.Scanner;

class ConversorTemperatura {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double celsius, fahre;    
        
        System.out.println("*** El identificador de decimal es (.) ***");
        System.out.println("Ingresa un número en Celsius: ");
        celsius = sc.nextDouble();
        
        // Regla de precedencia
        fahre = celsius * 1.8 + 32;
        int entero = (int) Math.round(fahre);
        
        // Mensaje formateado 
        String mensaje = "El valor ingresado en Celsius fue %.2f, al transformar a Fahrenheit dio %.2f y su redondeo en entero fue %d";
        String result = String.format(mensaje, celsius, fahre, entero);
        
        System.out.println(result);
    }
}

Espero que este ejemplo te ayude a resolver tus problemas y a comprender mejor el proceso de conversión de temperaturas en Java.

¡Espero haber ayudado y buenos estudios!

Realmente no tuve problemas el código, me ejecuto y realizo lo requerido, solo queria saber una forma distinta de hacerlo. Por otro lado no te entendí esto "es necesario realizar un casting explícito a double para asegurarnos de que el redondeo se realice correctamente."