Autor Tema: Java diferencia entre plantear un condicional if con else o sin else CU006636B  (Leído 6800 veces)

guillerub2001

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
¡Hola! Venía a preguntar si es correcta mi solución. Me gustaría que dijeran si hay alguna forma de mejorarlo, gracias.

El ejercicio dice así:

Citar
Considera estás desarrollando un programa Java donde necesitas trabajar con objetos de tipo Rueda (que representa a una rueda de un vehículo). Define una clase Rueda considerando los siguientes atributos de clase: tipo (String), grosor (double), diametro (double), marca (String). Define un constructor asignando unos valores de defecto a los atributos y los métodos para poder establecer y obtener los valores de los atributos. Crea un método denominado comprobarDimensiones donde a través de condicionales if realices las siguientes comprobaciones:

a) Si el diámetro es superior a 1.4 debe mostrarse por consola el mensaje “La rueda es para un vehículo grande”. Si es menor o igual a 1.4 pero mayor que 0.8 debe mostrarse por consola el mensaje “La rueda es para un vehículo mediano”. Si no se cumplen ninguna de las condiciones anteriores debe mostrarse por pantalla el mensaje “La rueda es para un vehículo pequeño”.

b) 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”.

Este es mi código para la solución:

Código: [Seleccionar]
public class Ruedas {
    // Campos

    public String tipo;
    public double grosor;
    public double diametro;
    public String marca;

    // Constructor

    public Ruedas(String getTipo, double getGrosor, double getDiametro, String getMarca) {
        tipo = getTipo;
        grosor = getGrosor;
        diametro = getDiametro;
        marca = getMarca;
    }

    /* Métodos
     * Tipo
     * Grosor
     * Diametro
     * Marca
     * Comprobar dimensiones
     */

    public void setTipo(String getTipo) {
        tipo = getTipo;
    }

    public void setGrosor(double getGrosor) {
        grosor = getGrosor;
    }

    public void setDiametro(double getDiametro) {
        diametro = getDiametro;
    }

    public void setMarca(String getMarca) {
        marca = getMarca;
    }

    // Para el if

    public void comprobarDimensiones() {

        if ( diametro > 1.4 ) {
            System.out.println ("La rueda es para un vehículo grande"); }
        if ( diametro <= 1.4 && diametro > 0.8 ) {
            System.out.println ("La rueda es para un vehículo mediano"); }
        if ( diametro < 0.8 ) {
            System.out.println ("La rueda es para un vehículo pequeño"); }

        if ( diametro > 1.4 && grosor < 0.4 ) {
            System.out.println ("El grosor es inferior al recomendado"); }
        else if ( diametro <= 1.4 && diametro > 0.8 && grosor < 0.25 ) {
            System.out.println ("El grosor es inferior al recomendado"); }
    }
}

También quería preguntar cómo podría usar el operador || (o/or) ya que no lo entiendo mucho. Pensé en usarlo así (en la última parte de mi código):

if ( diametro > 1.4 && grosor < 0.4 ) || ( diametro <= 1.4 && diametro > 0.8 && grosor < 0.25 ) {
    System.out.println ("El grosor es inferior al recomendado"); }

Pero no me dejaba compilarlo.

Muchas gracias por leer.
« Última modificación: 16 de Diciembre 2015, 10:31 por Alex Rodríguez »

guillerub2001

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Re:Java ejercicio resuelto: CU006636B - If/Else/Else if. Condicionales
« Respuesta #1 en: 11 de Diciembre 2015, 14:44 »
Revivo.

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Re:Java ejercicio resuelto: CU006636B - If/Else/Else if. Condicionales
« Respuesta #2 en: 11 de Diciembre 2015, 16:09 »
Hola guillerub2001,

Veo tu código bastante bien y funciona correctamente.

Te comento un par de puntos:

- En el primer bloque de comprobación  lo haces sin usar “else”. No es que este mal, porque las comprobaciones las hace, pero a la hora de ver el código el “else” ayuda más a seguir la comprobación y la hace más compacta. Sin “else” parecen 3 comprobaciones distintas.

- En el segundo bloque, según comentas, ya lo tenías. Lo único que falta es poner unos paréntesis. La comprobación del if debe ir entre paréntesis y, dentro de estos paréntesis, puedes hacer varias comprobaciones, cada una de ellas dentro de otros paréntesis.
Tu código es:
Citar
if ( diametro > 1.4 && grosor < 0.4 ) || ( diametro <= 1.4 && diametro > 0.8 && grosor < 0.25 ) {
    System.out.println ("El grosor es inferior al recomendado"); }
y este es el código que no te dará problema:
Citar
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"); }
¿Ves la diferencia?.Pruebalo y ya veras.

- En los métodos setters utilizas nombres de variables que comienzan con “get” como por ejemplo “getTipo”. Esto te puede crear confusión con los métodos getters. Te recomiendo usar otro formato de nombre, como por ejemplo “nuevoTipo” o “valorTipo”. Más adelante veras que incluso puedes usar el mismo nombre de variable que la que usas como atributo.

Espero que te sirvan mis comentarios.

Un Saludo,

guillerub2001

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Re:Java ejercicio resuelto: CU006636B - If/Else/Else if. Condicionales
« Respuesta #3 en: 11 de Diciembre 2015, 16:29 »
Muchísimas gracias por tu respuesta Enzo.
Sobre tu primera sugerencia, sería cambiar uno de los if's por else y poner else if en otro, ¿verdad?
Sobre el constructor y los métodos setters, es un fallo algo tonto, que lo cometí por una confusión al haber retomado el curso tras haberlo haberlo dejado hace un tiempo.
Saludos!
« Última modificación: 11 de Diciembre 2015, 18:41 por guillerub2001 »

Enzo

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 82
    • Ver Perfil
Re:Java ejercicio resuelto: CU006636B - If/Else/Else if. Condicionales
« Respuesta #4 en: 11 de Diciembre 2015, 19:08 »
Hola de nuevo guillerub2001,

Muchas "de nada". Me alegro que te pueda servir de ayuda.

Si. Si te fijas son tres condicionales ¿no?:
Pues comienzas con un "if" Si se cumple hace {...}
(y sin no se cumple) "else if" hace {...}
(Y si este ultimo tampoco se cumple) "else" hace {...}

Te aconsejo que lo pruebes y veras como ves el código mucho mas claro.

Saludos,

guillerub2001

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 12
    • Ver Perfil
Re:Java ejercicio resuelto: CU006636B - If/Else/Else if. Condicionales
« Respuesta #5 en: 11 de Diciembre 2015, 19:27 »
Sí, ya lo tenía claro, pero gracias xD.
Muchas gracias por tu ayuda.
Un saludo!

 

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".