Autor Tema: Duda no ejecuta switch java  (Leído 3854 veces)

Cygnus

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Duda no ejecuta switch java
« en: 11 de Septiembre 2013, 01:44 »
Hola!

Estoy tomando el curso de Aprender a Programar Java desde Cero. Llegue a un ejemplo sobre como utilizar switch. Copie el codigo como dice en el material pero a la hora de copilar me marcaba error, intente corregirlo y quedo de esta forma:

//Ejemplo de metodo switch
public class Edad{
    private int edad;
    public void Edad(){
    switch(edad){
        case 0:
        System.out.println("Acaba de nacer hace poco. No ha cumplido el año.");
        break;
        case 18:
        System.out.println("Esta justo en la mayoria de edad.");
        break;
        case 65:
        System.out.println("Esta en la edad de jubilacion.");
        break;
        default:
        System.out.println("La edad no es critica.");
        break;
    }
}
}


Al ponerlo asi ya no me marco errores, pero ahora no se como checar que corre bien el ejemplo. Creo un objeto y siempre que le doy void edad() sale el mensaje del primer caso independientemente del numero que le asigne, y si solo pongo un numero no permite crear el objeto.

Necesito ayuda para saber como manejar este ejemplo.
« Última modificación: 05 de Septiembre 2014, 09:57 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Duda sobre iniciar un programa.
« Respuesta #1 en: 11 de Septiembre 2013, 08:40 »
Hola, tienes razón en que el código tal y como está da lugar a un error.

Sobre el código que has puesto te haría las siguientes observaciones:

a) Has creado un método que se denomina Edad que no recibe parámetros. La clase carece de constructor. La clase tiene un atributo o variable denominada Edad que no se inicializa, por eso el valor inicial de la variable Edad es cero y cada vez que tratas de ejecutar el método te aparece siempre el mismo mensaje.

Para corregir esto en primer lugar es recomendable no poner a un método el mismo nombre que la clase, ese nombre debe quedar reservado para el constructor. En el constructor lo que se hace es inicializar los atributos de la clase. Por tanto deberías poner un constructor donde pida un parámetro que sea la edad, de modo que puedas establecer la edad que tú quieras y que no siempre valga cero. El código quedaría así:

Código: [Seleccionar]
//Ejemplo de metodo switch
public class Edad{
    private int edad;

    public Edad (int edadRecibida) {
        edad = edadRecibida;}

    public void dimeSiEdadEsCritica(){
        switch(edad){
            case 0:
            System.out.println("Acaba de nacer hace poco. No ha cumplido el año.");
            break;
            case 18:
            System.out.println("Esta justo en la mayoria de edad.");
            break;
            case 65:
            System.out.println("Esta en la edad de jubilacion.");
            break;
            default:
            System.out.println("La edad no es critica.");
            break;
        }
    }
}

Ahora tendrías que crear un objeto y como el constructor requiere un parámetro, te pedirá que indiques new Edad ( ... ) , ahí escribe un número por ejemplo 65 y pulsa ok. Ahora ejecuta el método void dimeSiEdadEsCritica() y deberá aparecerte el mensaje "Está en la edad de jubilación". Este objeto siempre te devolverá el mismo mensaje porque la edad está fijada en un valor, si quisieras ver otro mensaje tendrías que crear otro objeto.

 
Para hacer que el método funcione tendríamos más opciones, te voy a indicar dos más. La primera sería declarar el método dentro de una clase donde uno de sus atributos sea una variable de tipo entero denominada edad. Dentro de la clase creamos un método denominado setEdad que nos permita introducir una edad. Finalmente, crearíamos el objeto de la clase, estableceríamos la edad con el método setEdad y luego llamaríamos al método dimeSiEdadEsCritica para obtener un resultado. El código sería este:

Código: [Seleccionar]
public class testSwitch {
    // Atributos de clase
    private int edad;
    //Constructor
    public testSwitch() {       }


    public void setEdad(int edadRecibida) { edad = edadRecibida;}

        /* Ejemplo método que usa switch - aprenderaprogramar.com */
    public void dimeSiEdadEsCritica() {
        switch (edad) {
            case 0:
            System.out.println ("Acaba de nacer hace poco. No ha cumplido el año");
            break;
            case 18: System.out.println ("Está justo en la mayoría de edad"); break;
            case 65: System.out.println ("Está en la edad de jubilación"); break;
            default: System.out.println ("La edad no es crítica"); break;
        }
    }
}

Con el código anterior puedes cambiar la edad tantas veces como quieras utilizando el método setEdad y luego visualizar el mensaje que corresponda utilizando el método dimeSiEdadEsCritica()


La otra opción sería modificar el método para que lleve un parámetro edad de forma que cada vez que ejecutes el método te pida el parámetro.  El código quedaría así:

Código: [Seleccionar]
public class testSwitch {
    // Atributos de clase

    //Constructor
    public testSwitch() {       }

    /* Ejemplo método que usa switch - aprenderaprogramar.com */
    public void dimeSiEdadEsCritica(int edad) {
        switch (edad) {
            case 0:
            System.out.println ("Acaba de nacer hace poco. No ha cumplido el año");
            break;
            case 18: System.out.println ("Está justo en la mayoría de edad"); break;
            case 65: System.out.println ("Está en la edad de jubilación"); break;
            default: System.out.println ("La edad no es crítica"); break;
        }
    }
}

De cualquiera de estas maneras debería funcionarte. No hay una manera mejor que otra, simplemente debe comprenderse en qué consiste cada opción.

Prueba las distintas formas a ver si te funcionan y ya me comentas si tienes algún problema. Saludos.
Responsable de departamento de producción aprenderaprogramar.com

 

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