Autor Tema: If else, if else if problemas!!! BlueJ Java  (Leído 10266 veces)

jonathan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 13
    • Ver Perfil
If else, if else if problemas!!! BlueJ Java
« en: 24 de Abril 2014, 22:33 »
hola! estoy copiando de forma manual el codigo de:
https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=481:if-else-if-else-if-java-estructura-o-esquema-de-decision-condicional-ejemplos-de-uso-ejercicios-cu00636b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

en el bluj... pero me arroja error illegal start of type...ayuda porfavor:
Código: [Seleccionar]
public class Prueba{
       int desplazamientox;
       int desplazamientoy;
       
       public Prueba () {
           desplazamientox = 0;
           desplazamientoy = 0;
        }
       
        //metodos setters
        public int setDESPLAX (int valorDESPLAX){
            desplazamientox = valorDESPLAX;
        }
       
        public int setDESPLAY (int valorDESPLAY){
            desplazamientoy = valorDESPLAY;
        }
       
       
        if (desplazamientox == 0 && desplazamientoy ==1){
            System.out.println("Se procede a bajar el personaje 1 posicion");
        }
        else if (desplazamientox == 1 && desplazamientoy==0){
            System.out.println("Se procede a mover el personaje 1 posicion a la derecha");
        }
        else if (desplazamientox == -1 && desplazamientoy==0){
            System.out.println("Se procede a mover el personaje 1 posicion a la izquierda");
        }
        else{
            System.out.println("Los valores no son validos");
        }
       
    }
« Última modificación: 02 de Septiembre 2014, 18:33 por Alex Rodríguez »

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:If else, if else if problemas!!!
« Respuesta #1 en: 24 de Abril 2014, 23:13 »
Qué tal, tienes varios problemas en este código:

        public int setDESPLAX (int valorDESPLAX){
            desplazamientox = valorDESPLAX;
        }

No puedes poner public int porque esto significaría que el método devuelve un int y tendrías que poner una sentencia return, pero el método no es para devolver algo, sino para establecer el valor de un atributo, para especificar que no se devuelve nada tienes que poner void, sería:

        public void setDESPLAX (int valorDESPLAX){
            desplazamientox = valorDESPLAX;
        }

Lo mismo con el otro método.

Por otro lado el código del if no puede estar "suelto", el código tiene que estar dentro de algo (de un constructor, o de un método...) Por tanto tendrías que escribir el método para meter el código dentro:

Código: [Seleccionar]
        public void comprobarDesplazamiento () {
        if (desplazamientox == 0 && desplazamientoy ==1){
            System.out.println("Se procede a bajar el personaje 1 posicion");
        }
        else if (desplazamientox == 1 && desplazamientoy==0){
            System.out.println("Se procede a mover el personaje 1 posicion a la derecha");
        }
        else if (desplazamientox == -1 && desplazamientoy==0){
            System.out.println("Se procede a mover el personaje 1 posicion a la izquierda");
        }
        else{
            System.out.println("Los valores no son validos");
        }
    }


jonathan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 13
    • Ver Perfil
Re:If else, if else if problemas!!!
« Respuesta #2 en: 24 de Abril 2014, 23:36 »
mil gracias!!!!! ya le estoy entendiendo!!!

heseos

  • Sin experiencia
  • *
  • Mensajes: 15
    • Ver Perfil
Re:If else, if else if problemas!!!
« Respuesta #3 en: 26 de Abril 2014, 21:08 »
Hola, aquí un ejemplo de mi ejercicio de rueda resulto, te servirá de guía.
Si algo esta mal favor de corregir.
Código: [Seleccionar]
public class Rueda{
    String tipo;
    double grosor;
    double diametro;
    String marca;
   
    public Rueda(){
    tipo = "Racing";
    marca = "Michelling";
    grosor = 1.4;
    diametro = 1.8;
    }
   
    public void setDiametro (double valorDiametro){
        diametro = valorDiametro;
       
        if (diametro > 1.4){
        System.out.println("La rueda es para un vehiculo grande");
        }
        else if (diametro <= 1.4 && diametro > 0.8){
        System.out.println("La rueda es para un vehiculo mediado");
        }
        else {
        System.out.println("La rueda es para un vehiculo pequeño");
        }
       
        }
       
        public void setDiametro1 (double valorDiametro1, double grosor1  ){
            diametro = valorDiametro1;
            grosor = grosor1;
           
            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 menor del recomendado");
            }
       
        }
    }

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:If else, if else if problemas!!!
« Respuesta #4 en: 26 de Abril 2014, 23:10 »
El ejercicio deberías replantearlo teniendo en cuenta los siguientes aspectos:

- En el constructor de una clase los atributos normalmente se deben inicializar a valores que indiquen que el objeto acaba de ser creado (y que no se han establecido valores para sus atributos). Tal y como tú lo indicas todas las ruedas que se creen van a ser inicialmente de marca Micheling, en vez de eso sería más aconsejable que la marca al crear el objeto sea "Desconocida". Luego la marca se establecerá usando el método setMarca, precisamente para eso es para lo que sirve el método setMarca, para establecer el valor de la marca. Lo mismo para el tipo, grososr, diametro, etc.

- Los nombres de los métodos deben indicar qué es lo que hace el método. Por ejemplo un método como public void setDiametro1 (double valorDiametro1, double grosor1  ) parece indicar que este método sirve para establecer (set) el diámetro, pero luego te encuentras que el método sirve para otra cosa. Por tanto sería más lógico que el nombre de este método describa lo que hace el método, si no induce a confusión.

Igualemente un método sólo debe servir para hacer una cosa, no para hacer varias cosas que no guarden relación. Por tanto en public void setDiametro (double valorDiametro)  únicamente debería establecerse el valor del diámetro, y no hacer comprobaciones de otro tipo. Esas comprobaciones deberían ir en un método independiente que no se llame setAlgo porque set es para establecer valores, no para otra cosa. Salu2
« Última modificación: 26 de Abril 2014, 23:16 por javi in the sky »

 

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