Autor Tema: CU00636B - Entrega nº36 del curso "Aprender programación Java desde cero"  (Leído 5209 veces)

MrClassic

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Cordial saludo,

Entrega nº36 del curso "Aprender programación Java desde cero".

Quedo en espera de Correcciones y/o sugerencias.

Gracias.

Código: [Seleccionar]
public class Rueda{
    /*Properties*/
    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;
   
    /*Constructor*/
    public Rueda(){
        tipo = "No definido";
        grosor = 0;
        diametro = 0;
        marca = "No definido";
    }
   
    /*Setters*/
    public void setTipo(String valTipo){
        tipo = valTipo;
    }
    public void setGrosor(double valGrosor){
        grosor = valGrosor;
    }
    public void setDiametro(double valDiametro){
        diametro = valDiametro;
    }
    public void setMarca(String valMarca){
        marca = valMarca;
    }
   
    /*Getters*/
    public String getTipo(){
        return tipo;
    }
    public  double getGrosor(){
        return grosor;
    }
    public double getDiametro(){
        return diametro;
    }
    public String getMarca(){
        return marca;
    }
   
    public void comprobDiametro(){
        /*a*/
        if (diametro > (1.4)) {
            System.out.println("La rueda de marca (" + marca + "), de tipo " + tipo + " de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos grandes.");
        }
        else if ( /*(1.4) >= diametro >= (0.8))*/ (diametro <= (1.4) && diametro >= (0.8))){
            System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ")es para vehiculos medianos.");
        }
        else{
            System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos pequeños.");
        }
       /*b*/
       if ((diametro > (1.4) && grosor < (0.4)) || ((diametro < (1.4)) && (diametro > (0.8)) && (grosor < (0.25)))){
           System.out.println("El grosor de la rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") para esta rueda, es inferior al recomendado.");
        }
       
    }
}
Quedo en espera de sus recomendaciones y/o correcciones.

Gracias.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Hola MrClassic

Tu clase Rueda está muy bien. Tu código está bien estructurado siguiendo las convenciones:

  Declaración de atributos
  Inicialización de atributos
  Setters y getters de los atributos

  Y al final  método comprobDiametro (aunque este nombre no es explicativo pues además del diámetro se comprueba el grosor - el nombre propuesto en la lección era más adecuado)

En un ejercicio anterior ya te comenté que inicializar los atributos a sus valores por defecto era:

  String inicializar a cadena vacía
  int inicializar a cero

Esto es lo que se hace en el constructor por defecto. Si necesitamos algo más utilizaremos constructores con parámetros (lo verás más adelante)

Tu método comprobDiametro está bien construido, pero te has perdido algunos detalles en las condiciones:
He colocado las diferencias como comentarios.

Código: [Seleccionar]
public void comprobDiametro(){
        /*a*/
        if (diametro > (1.4)) {
            System.out.println("La rueda de marca (" + marca + "), de tipo " + tipo + " de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos grandes.");
        }
        else if ( /*(1.4) >= diametro >= (0.8))*/ (diametro <= (1.4) && diametro >= (0.8))){
            System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ")es para vehiculos medianos.");
        }

/** La condición anterior debía ser:
        else if ( /*(1.4) >= diametro >= (0.8))*/ (diametro <= (1.4) && diametro > (0.8))){*/

        else{
            System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos pequeños.");
        }
       /*b*/
       if ((diametro > (1.4) && grosor < (0.4)) || ((diametro < (1.4)) && (diametro > (0.8)) && (grosor < (0.25)))){
           System.out.println("El grosor de la rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") para esta rueda, es inferior al recomendado.");
        }
       
/**La concición anterior debía ser:
       if ((diametro > (1.4) && grosor < (0.4)) || ((diametro <= (1.4)) && (diametro > (0.8)) && (grosor < (0.25)))){ */
    }
La importancia del operador adecuado tiene solo la importancia que se le debe dar. Por ejemplo un kilómetro comparada con la circunferencia de la Tierra podemos decir que es un error despreciable. En cambio un miligramo de diferencia en una dosificación de laboratorio puede ser abismal.

Saludos

Fco. Gómez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
Buenas:
Adjunto el código del ejercicio, las pruebas me han funcionado y siguiendo la línea del curso, entiendo que es mejor ceñirse a la resolución de las cuestiones planteadas
paso a paso para que no nos lleve a confusiones.
No se si mi planteamiento es la mejor de las soluciones.
Pero un antiguo profesor me indicó que si la redacción es clara y las pruebas son correctas, tenemos el problema resuelto al menos en un porcentaje muy elevado.
Un saludo

Código: [Seleccionar]
public class Rueda
{
    // instance variables - replace the example below with your own
    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;
         /**
     * Constructor for objects
     */
    public Rueda()
    {
        // initialise instance variables
        tipo = "";
        grosor = 0;
        diametro = 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;    }
   
    /*Metodo tipo procedimiento*/
    public void comprobarDimensiones() {
        if (diametro > 1.4 ) {
             System.out.println("La rueda es para un vehículo grande" );
            }
            // diametro mayor o igual que 1,4 o mayor que 0.8
            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" );
                }
        if (diametro > 1.4 && grosor < 0.4 ) {
             System.out.println("El grosor de la rueda es inferior al recomendado (1)" );
            }
            else if (diametro <= 1.4 && diametro > 0.8 && grosor < 0.25) {
                System.out.println("El grosor de la rueda es inferior al recomendado (2)" );
        }
    }
}
« Última modificación: 19 de Enero 2015, 17:19 por Fco. Gómez »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Hola Francisco, tu ejercicio es correcto y está bien planteado. Sí hay algo que merece ser comentado y mejorado. La condición:

Si el diámetro es superior a 1.4 con un grosor inferior a 0.4, ó si el diámetro es menor o igual a 1.4 pero mayor que 0.8, con un grosor inferior a 0.25, deberá mostrarse por consola el mensaje “El grosor para esta rueda es inferior al recomendado”.

Es una sola condición. No es adecuado escribirla como la has escrito:

Código: [Seleccionar]
        if (diametro > 1.4 && grosor < 0.4 ) {
             System.out.println("El grosor de la rueda es inferior al recomendado (1)" );
            }
            else if (diametro <= 1.4 && diametro > 0.8 && grosor < 0.25) {
                System.out.println("El grosor de la rueda es inferior al recomendado (2)" );
        }

Es más simple y mejor código una expresión única del tipo:

Código: [Seleccionar]
if (((diametro > 1.4)&&(grosor < 0.4))||(((diametro <= 1.4)&&(diametro > 0.8))&&(grosor < 0.25)))
          {System.out.println (" El grosor para esta rueda es inferior al recomendado ");}

De resto todo bien. Saludos

Fco. Gómez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
Completamente de acuerdo y tomo muy buena nota.
Lo cierto es que no estaba completamente seguro de hacerlo así.
Vamos que dudaba si hacerlo o no, y al final decidí que no. ( mal hecho )
Así que lo planteé de ese modo que hemos visto. ( mi trampa )
Pero coincido con el planteamiento que indicas a pies juntillas.
Un saludo y gracias


adrianpza

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Hola que tal Fco gomez., soy nuevo en el foro y estoy aprendiendo igual que todos ustedes,,, note un posible error en tu sentencia y porfavor corrigeme si me equivoco ya que tmb estoy aprendiendo...
has puesto un operador || "or" en la primer sentencia "if else" cuando deberia de ser un operador logico "and" es decir el &&.
lo marco en rojo para que veas donde es...

/*Metodo tipo procedimiento*/
    public void comprobarDimensiones() {
        if (diametro > 1.4 ) {
             System.out.println("La rueda es para un vehículo grande" );
            }
            // diametro mayor o igual que 1,4 o mayor que 0.8
        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" );
                }
« Última modificación: 24 de Enero 2015, 18:37 por adrianpza »

MrClassic

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Cordial Saludo,


Presento Correcciones del ejercicio.




Gracias.

Código: [Seleccionar]
public class Rueda{
    /*Properties*/
    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;
   
    /*Constructor*/
    public Rueda(){
        tipo = "No definido";
        grosor = 0;
        diametro = 0;
        marca = "No definido";
    }
   
    /*Setters*/
    public void setTipo(String valTipo){
        tipo = valTipo;
    }
    public void setGrosor(double valGrosor){
        grosor = valGrosor;
    }
    public void setDiametro(double valDiametro){
        diametro = valDiametro;
    }
    public void setMarca(String valMarca){
        marca = valMarca;
    }
   
    /*Getters*/
    public String getTipo(){
        return tipo;
    }
    public  double getGrosor(){
        return grosor;
    }
    public double getDiametro(){
        return diametro;
    }
    public String getMarca(){
        return marca;
    }
   
    public void comprobDiametro(){
        /*a*/
        if (diametro > (1.4)) {
            System.out.println("La rueda de marca (" + marca + "), de tipo " + tipo + " de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos grandes.");
        }
        else if ( /*(1.4) >= diametro >= (0.8))*/ (diametro <= (1.4) && diametro > (0.8))){
            System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ")es para vehiculos medianos.");
        }
        else{
            System.out.println("La rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") es para vehiculos pequeños.");
        }
       /*b*/
       if ((diametro > (1.4) && grosor < (0.4)) || ((diametro <= (1.4)) && (diametro > (0.8)) && (grosor < (0.25)))){
           System.out.println("El grosor de la rueda de marca (" + marca + "), de tipo (" + tipo + ") de diametro (" + diametro + ") y de grosor (" + grosor + ") para esta rueda, es inferior al recomendado.");
        }
       
    }
}
Quedo en espera de sus recomendaciones y/o correcciones.

Gracias.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".