Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: eduardoc en 27 de Junio 2016, 15:08

Título: Java diferencia entre double y Double tipo primitivo y objeto ejercicio CU00636B
Publicado por: eduardoc en 27 de Junio 2016, 15:08
Buenas, dejo la solución para el ejercicio de referencia CU00636B del tutorial de programación autoevaluable de Java.

Aprovecho para consultar sobre la asignación a una variable del tipo Double, mi primer intención fue inicializar con 0 pero al compilar me indicó un error por lo que probé con 0.0, debido al tipo.

Tal vez exista alguna razón.

De ingresarse el valor 0 durante la ejecución sería un error y se debe controlar el formato antes de realizar la asignación?

Gracias mil de antemano. Saludos,
Edu.

Código: [Seleccionar]
public class Rueda{
    String tipo;
    Double grosor;
    Double diametro;
    String marca;
   
    //Constructor.
    public void Rueda(){
        tipo = "";
        grosor = 0.0 ;
        diametro = 0.0 ;
        marca = "";     
    }
   
    // Setters.
    public void setTipo(String valorTipo){
        tipo = valorTipo;
    }
   
    public void setGrosor(Double valorGrosor){
        grosor = valorGrosor;
    }
   
    public void setDiametro(Double valorDiametro){
        diametro = valorDiametro;
    }
   
    public void setMarca(String valorMarca){
        marca = valorMarca;
    }
   
    // Getters.
    public String getTipo(){return tipo;}
    public Double getGrosor() {return grosor;}
    public Double getDiametro() {return diametro;}
    public String getMarca() {return marca;}
   
    // Método para comprobar diámetros.
    public void comprobarDiametros(){
        if (diametro > 1.4) {
            System.out.println("La rueda es para un vehículo grande.");
        } else if (diametro <= 1.4 && diametro > 0.8) {
            System.out.println("La rueda es para un vehículo mediano.");
        } else {
            System.out.println("La rueda es para un vehículo pequeño.");
        }
    }
}
Título: Re:Ejercicio: (CU00636B) - If else, if else if Java. Estructura o esquema de...
Publicado por: DRANXZ88 en 27 de Junio 2016, 16:31
El constructor tiene que ser public nomas solo los métodos lo que puede ser void.
Este esta mal.
Código: [Seleccionar]
//Constructor.
    public void Rueda(){
        tipo = "";
        grosor = 0.0 ;
        diametro = 0.0 ;
        marca = "";     
    }
Tiene que se así.
Código: [Seleccionar]
//Constructor.
    public Rueda(){
        tipo = "";
        grosor = 0.0 ;
        diametro = 0.0 ;
        marca = "";     
    }
Y también le falta mas condición a tu Métodos para poder cumplir todo lo que pide el ejercicios.
Título: Re:Ejercicio: (CU00636B) - If else, if else if Java. Estructura o esquema de...
Publicado por: eduardoc en 27 de Junio 2016, 17:08
DRANXZ88, gracias por ambas correcciones.
Respecto al constructor no había reparado en que no lleva "void".
Sobre la falta de condición, un descuido de mi parte. Intentaré hacer los ejercicios con menos prisa.

Sinceramente, muchas gracias.

Dejo el código corregido en la definición del constructor y con el agregado de condición.

Código: [Seleccionar]
public class Rueda{
    String tipo;
    Double grosor;
    Double diametro;
    String marca;
   
    //Constructor.
    public Rueda(){
        tipo = "";
        grosor = 0.0 ;
        diametro = 0.0 ;
        marca = "";     
    }
   
    // Setters.
    public void setTipo(String valorTipo){
        tipo = valorTipo;
    }
   
    public void setGrosor(Double valorGrosor){
        grosor = valorGrosor;
    }
   
    public void setDiametro(Double valorDiametro){
        diametro = valorDiametro;
    }
   
    public void setMarca(String valorMarca){
        marca = valorMarca;
    }
   
    // Getters.
    public String getTipo(){return tipo;}
    public Double getGrosor() {return grosor;}
    public Double getDiametro() {return diametro;}
    public String getMarca() {return marca;}
   
    // Método para comprobar diámetros.
    public void comprobarDiametros(){
        if (diametro > 1.4) {
            System.out.println("La rueda es para un vehículo grande.");
            if (grosor < 0.4) {
                System.out.println("El grosor para esta rueda es inferior al recomendado");
            }
        } else if (diametro <= 1.4 && diametro > 0.8) {
            System.out.println("La rueda es para un vehículo mediano.");
            if (grosor < 0.25) {
                 System.out.println("El grosor para esta rueda es inferior al recomendado");
            }
           } else {
               System.out.println("La rueda es para un vehículo pequeño.");
        }
    }
}
Título: Re:Java diferencia entre double y Double tipo primitivo y objeto ejercicio CU00636B
Publicado por: Alex Rodríguez en 30 de Junio 2016, 16:00
Hola Eduardo, hay un aspecto importante a tener en cuenta.

En Java no es lo mismo double que Double. En concreto double es un tipo de dato denominado "primitivo" mientras que Double es un tipo de dato denominado "objeto".

Se presta a confusión porque es un simple cambio de minúscula a mayúscula pero es importante que lo tengas claro. Repasa esta entrega del curso: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=419:tipos-de-datos-java-tipos-primitivos-int-boolean-y-objeto-string-array-o-arreglo-variables-cu00621b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

En este ejercicio se pide usar double (el tipo primitivo).

Respecto a que en algunos casos haya que asignar 0.0 en lugar de 0 la razón es que así lo exige el compilador. Posiblemente los creadores del lenguaje lo hicieron así para forzar al programador a hacer explícito que necesita un dato decimal en lugar de entero. En general es preferible siempre usar el tipo de dato más simple posible.

Sobre si ingresar el valor 0 te puede generar un error: depende. En algunas ocasiones se producen conversiones automáticas que evitan que salten errores. Más adelante en el curso podrás hacer pruebas tú mismo.

Saludos