Autor Tema: Ejercicio If/else if/ else condicionales Java resuelto CU00636B  (Leído 8054 veces)

KillerNemesis

  • Sin experiencia
  • *
  • Mensajes: 25
    • Ver Perfil
Que tal!
envio mi ejercicio para revision! lo he probado y funciona pero no estoy seguro de una cosa...

Al momento de hacer la prueba del primer Inciso "a)" todo va perfecto! mi duda surge aquí; cuando modifico solo el valor "grosor" sobre ese mismo objeto que cree para verificar los puntos del inciso  "b)" me sigue apareciendo en pantalla los mensajes del inciso "a). Ahora si vuelvo a compilar el código y de nuevo creo un objeto, pero esta ves ingreso los datos para verificar el inciso "b) me va perfecto el proceso y Viceversa.

Esto a que se debe... así debería de funcionar el código? fue un error mio en alguna linea de código que hice incorrecta? les agradecería me pudieran orientar.

Código: [Seleccionar]
/* KillerNemesis - aprendeaprogramar.com - EjercicioCU00636B*/

//Introduction if/else if/else


public class Rueda{
   
    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;
   
    //Constructor
   
    public Rueda(){
       
        tipo = "Tipo desconocido";
        grosor = 0.0;
        diametro = 0.0;
        marca = "Desconocida";
    }
   
   
    //Metodo
     
    public void setTipo (String valueTipo){
        tipo = valueTipo;
        System.out.println("El tipo de rueda ha sido modificado a: " + tipo);
    }
   
    public void setGrosor (double valueGrosor){
        grosor = valueGrosor;
        System.out.println("El grosor ahora es de: " + grosor + " " + "cm");
    }
   
    public void setDiametro (double valueDiametro){
        diametro = valueDiametro;
        System.out.println("El diametro de la rueda a pasado ha ser de: " + diametro + "´´");
    }
   
    public void setMarca (String valueMarca){
        marca = valueMarca;
        System.out.println("La marca de la rueda ahora es: " + marca);
    }
       

    //Metodo para comprobar dimenciones
   
    public void comprobarDimenciones (){       
                   
        if (diametro>1.4){
        System.out.println("La rueda de " + tipo + " " + "de marca " + marca + " " + "es para un veiculo grande.");
    }
   
    else if (diametro<=1.4 && diametro>0.8){
        System.out.println("La rueda de " + tipo + " " + "de marca " + marca + " " + "es para un veiculo mediano.");
    }
           
    else {
        System.out.println("La rueda de " + tipo + " " + "de marca " + marca + " " + "es para un veiculo pequeño.");
    }     
   
    // ejercicio b)
        if (diametro >1.4 && grosor <0.4 || diametro <=1.4 && diametro >0.8 && grosor <0.25){
    System.out.println("El grosor para esta rueda de " + tipo + " " + "de marca " + marca + " " + "es inferior al recomendado.");
}
}//Cierre del Metodo


//Metodos Getters

public String getTipo() {return tipo;}
public double getGrosor() {return grosor;}
public double getDiametro() {return diametro;}
public String getMarca() {return marca;}
}//Cierre del metodo getters

Saludos!
« Última modificación: 11 de Abril 2015, 10:05 por Alex Rodríguez »

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
Re:Entrega de Ejercicio CU00636B (If/else if/ else)
« Respuesta #1 en: 12 de Octubre 2014, 18:27 »
 Hola  KillerNemesis!

Tu código cumple con lo requerido en el enunciado del ejercicio de esta entrega, no obstante te comento lo siguiente:

Aunque en otras entregas ayas visto ejercicios donde un método set ademas de realizar su procedimiento asignado, el cual es re definir el valor de una variable, también muestre por pantalla un mensaje mediante una instrucción "System.out.println();" Te hago la aclaración de que esto no se considera como una buena practica de diseño de código.

Tal Vez esto te resulte confuso cuando en entregas anteriores como por ejemplo en el ejercicio de la entrega "CU00632B" una parte de lo requerido dice:
Citar
En cada método, incluye una instrucción para que se muestre por consola un mensaje
informando del cambio. Por ejemplo si cambia la especialidad del médico, debe aparecer un mensaje
que diga: “Ha cambiado la especialidad del médico de nombre … . La nueva especialidad es: …”.
En esta entrega esto se hace a modo de practica, para ir familiarizando con lo que es mostrar mensajes por pantalla. Ya en entregas mas avanzadas como lo e esta (CU00636B) esa "mala practica" debería ir quedando atrás. Quédate con la idea de que tanto los métodos setters como los métodos getters solo deben realizar una tarea
(reasignar y devolver el valor de una variable respectivamente) y que no se les debe sobrecargar con mas tareas como mostrar mensajes por pantalla ext...

En cuanto a tu duda:
Citar
Al momento de hacer la prueba del primer Inciso "a)" todo va perfecto! mi duda surge aquí; cuando modifico solo el valor "grosor" sobre ese mismo objeto que cree para verificar los puntos del inciso  "b)" me sigue apareciendo en pantalla los mensajes del inciso "a). Ahora si vuelvo a compilar el código y de nuevo creo un objeto, pero esta ves ingreso los datos para verificar el inciso "b) me va perfecto el proceso y Viceversa.
Puesto que tu código esta dentro de lo que cabe decir correcto
(no correcto de un todo por lo que ya te comente sobre los métodos setters) me párese que lo que dices podría surgir debido a una configuración de la consola de mensajes de BlueJ. En dicha terminal en la esquina superior izquierda busca la opción "Options" (Opciones) y activa la opción: "Clear screen at method call"
(Limpiar pantalla al llamar un método) y luego prueba a ver si surgen cambios en cuanto a tus expectativas.

Saludos!
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

KillerNemesis

  • Sin experiencia
  • *
  • Mensajes: 25
    • Ver Perfil
Re:Entrega de Ejercicio CU00636B (If/else if/ else)
« Respuesta #2 en: 13 de Octubre 2014, 23:13 »
Te lo Agradezco Sniper, es bueno saber que es lo que no de debe de hacer y no salirme de los parámetros de lo que indique el ejercicio. Gracias por la solucion me funciono bien aunque estaba causando conflicto lo que me mencionabas acerca de la instrucción "System.out.println();"

Saludos! ;D

dejulian222

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Entrega de Ejercicio CU00636B (If/else if/ else Java)
« Respuesta #3 en: 27 de Octubre 2014, 19:54 »
he puesto lo que requeria en las obciones a y b en un mismo metodo, me funciona, pero no se si es un uso correcto de lis if else.
Código: [Seleccionar]
/**
 * Ejercicio tema 37.
 * uso if else
 * 27-10-14.
 */
public class Rueda {
    private String tipo;
    private double grosor;
    private double diametro;
    private String marca;
 
    public Rueda() {
        tipo= "desconocido";
        grosor=0.0;
        diametro=0.0;
        marca="desconocida";
    }
   
   
    public void setTipo(String clase) {
        tipo=clase;
    }
    public void setGrosor( double valorGrosor) {
        grosor = valorGrosor;
    }
    public void setDiametro(double valorDiametro) {
        diametro = valorDiametro;
    }
    public void setMarca(String claseMarca) {
        marca= claseMarca;
    }
    public void setCompobarDimensiones() {
        if(diametro > 1.4) {
            System.out.println("La rueda es para un vehiculo 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 vehiculo 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 vehiculo pequeño");
        }
    }
   
    public String getTipo() {
        return tipo;
    }
    public double getGrosor() {
        return grosor;
    }
    public double getDiametro() {
        return diametro;
    }
    public String getMarca() {
        return marca;
    }
}

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Entrega de Ejercicio CU00636B (If/else if/ else Java)
« Respuesta #4 en: 29 de Octubre 2014, 08:08 »
Hola dejulian222, he comprobado tu código y te digo las cosas que merecen ser comentadas.

El nombre del método setCompobarDimensiones() no es adecuado: los métodos que empiezan por set se usan para establecer el valor de los atributos de la clase. Por ejemplo setNombre, setAltura, setDiametro, etc. pero si el método tiene otro fin no debe empezar por set. En este método podrías ponerle simplemente public void comprobarDimensiones ó public void verificarDimensiones o similar.

En ese método, tienes condiciones if dentro de otros if. Por ejemplo

 if(diametro > 1.4) {
            System.out.println("La rueda es para un vehiculo grande");
            if(grosor<0.4) {
                System.out.println("El grosor para esta rueda es inferior al recomendado");
            }
        }


Esto no está mal, pero suele considerarse poco elegante meter if dentro de otros if porque puede dificultar la comprensión del código. Mira cómo está resuelto aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=1214

Como te digo no se puede decir que esté mal, simplemente debes tenerlo en cuenta para tratar de evitar tener if dentro de if excepto cuando no haya otras alternativas.

Cordial saludo
Responsable de departamento de producción aprenderaprogramar.com

dejulian222

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Entrega de Ejercicio CU00636B (If/else if/ else Java)
« Respuesta #5 en: 29 de Octubre 2014, 13:29 »
Gracias Cesar, me doy cuenta de la incorreccion del uso del set,
y he observado la forma logica del uso de los if en el ejemplo que me remites;
corregidos mis errores, sigo entregado ha la tarea no sin antes reiterarte
las gracias,

y mandarte un saludo.
julian.

yornel13

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Entrega de Ejercicio CU00636B (If/else if/ else Java)
« Respuesta #6 en: 10 de Abril 2015, 03:04 »
Hola...
Yo lo hice asi, que opinan?  ;D

Código: [Seleccionar]
import java.util.Scanner;
class rueda
{
public static void main(String[]args)
{
Scanner sc =  new Scanner(System.in);
String tipo, marca;
double grosor, diametro;

System.out.print("Tipo de rueda: ");
tipo = sc.nextLine();

System.out.print("Marca de rueda: ");
marca = sc.nextLine();

System.out.print("Grosor de la rueda: ");
grosor = sc.nextDouble();

System.out.print("Diametro de la rueda: ");
diametro = sc.nextDouble();

if (diametro > 1.4)
{
System.out.print("La rueda es para vehiculo grande");
}
else if (diametro <= 1.4 && diametro > 0.8)
{
System.out.print("La rueda es para vehiculo mediano");
}
else
{
System.out.print("La rueda es para vehiculo pequeño");
}

if ((diametro > 1.4 && grosor < 0.4) || (diametro <= 1.4 && diametro > 0.8 && grosor < 0.25))
{
System.out.print("\nEl grosor para esta rueda es inferior al recomendado");
}
else
{}

}
}
« Última modificación: 10 de Abril 2015, 10:16 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Entrega de Ejercicio CU00636B (If/else if/ else Java)
« Respuesta #7 en: 10 de Abril 2015, 10:20 »
Hola yornel13 a los nuevos en los foros les recomendamos leer https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 para saber cómo se pega el código.

Tu ejercicio está bien resuelto aunque por convención el nombre de clase en Java debe escribirse preferiblemente en mayúsculas.

Por el uso de scanner, main, etc. veo que no estás siguiendo el curso ordenadamente. Para que el curso te sea realmente útil te recomiendo seguirlo paso a paso sin utilizar en un ejercicio conocimientos que no se hayan explicado en el propio curso. De esa forma el curso te dará mayor rendiemiento y será más efectivo el aprendizaje.

Saludos.

yornel13

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Entrega de Ejercicio CU00636B (If/else if/ else Java)
« Respuesta #8 en: 10 de Abril 2015, 17:57 »
Ah ok, muchas gracias  ;D, es que empeze hace 2 días a aprender java y estaba buscando como resolver un ejercicio de sumar 2 numeros y llegue a la pagina y empeze desde esa parte donde llegue, bueno debo entonces retrocer un poco en el curso.  ::)

 

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