Invocar metodos desde switch

Iniciado por Finishim, 30 Abril 2015, 03:58 AM

0 Miembros y 1 Visitante están viendo este tema.

Finishim

Estimados, tengo una duda:

Tengo una estructura de control como switch con varias opciones, en donde la opcion 1 me permite guardar datos enteros y de tipo String, y que en la opción 2 del menú permita mostrar esos guardados en el case 1

ej: menu
     "1) ingresar datos"
     "2) mostrar datos"

para ingresar datos en el case 1 tengo el siguiente codigo:

Código (java) [Seleccionar]
  Scanner lector=new Scanner(System.in);
       Persona persona=new Persona();
switch(op){
                   
                   
           case 1:   System.out.println("Ingrese nombre");
                     String nombre=lector.nextLine();
                     persona.setNombre(nombre);
                     
                     System.out.println("Ingrese edad");
                     int edad=lector.nextInt();
                     persona.setEdad(edad)
                     break;


y para mostrar tengo lo siguiente:
Código (java) [Seleccionar]
  case 2:    System.out.println("edad:"+persona.getEdad());
             System.out.println("nombre:"+persona.getNombreCompleto());
                     break;
                     


Cuando quiero mostrar los datos, este solo me imprime los campos edad y nombre, pero no el contenido que supuestamente he guardado en el case 1, eso me hace pensar que debo tener un error en las llamadas, o esta mal implementada las llamadas ?

el codigo de la clase:
Código (java) [Seleccionar]

public Persona ()
   
   {
       nombre= "";
       edad=0;
   }
     
   public Persona (String nombre, int edad)
   {
       this.nombre=nombre;
       this.edad = edad;
   }

public void setNombre(String nombre)
   {
      this.nombre=nombre;
   }
   
   public void setEdad(int edad)
   {
      this.edad = edad;
   }

public String getNombre()
   {
       return nombre;
   }
   
   public int getEdad()
   {
       return edad;
   }


agradecería cualquier orientación a alguna posible solución

PabloPbl

Intenta hacerlo de esta forma, en el case 1:
Código (java) [Seleccionar]

case 1:   System.out.println("Ingrese nombre");
     String nombre=lector.nextLine();
     persona.setNombre(nombre);

     System.out.println("Ingrese edad");
     int edad=Integer.parseInt(lector.nextLine());
     persona.setEdad(edad)
     break;

PabloPbl

Creo que entendí mal tu pregunta,

No veo ningún método llamado getNombreCompleto() en la clase Persona, quizás si intentas con getNombre() debería funcionar.

PD: Quizás si muestras un poco mas tu code podría ayudarte.

Finishim

#3
Aqui tengo el code con mas detalles:

Código (java) [Seleccionar]
do{
       System.out.println("---M E N U---");
       System.out.println("1) Ingesa datos");
       System.out.println("2) Mostrar datos");
       System.out.println("3) Salir");
       op = lector.nextInt();
       System.out.flush();
       Scanner lector=new Scanner(System.in);
       Persona persona=new Persona();
                   
         switch(op){
               
           case 1:   System.out.println("Ingrese nombre");
                     String nombre=lector.nextLine(); // aqui deberia guardar el dato
                     persona.setNombre(nombre);  // y aqui pasarselo al metodo set para despues ser mostrado, o no?
                     
                     System.out.println("Ingrese edad");
                     int edad=lector.nextInt();  // guardamos
                     persona.setEdad(edad);   // pasamos a setEdad
                     break;
                   
       
                     
          case 2:    System.out.println("edad:"persona.getEdad());
                     System.out.println("nombre:"persona.getNombre());
                     break;
                     
                 
         
                 
               
                 
               }
     }  while(op<=3);


En el case 2 supuestamente  deberia llamar a los metodos get para mostrar la info pero no lo hace  y solo muestra los campos edad y nombre imprimidos en el systemout.prinltn, y no muestra nada

Y la clase:

Código (java) [Seleccionar]
public class Persona
{
   private String nombre;
   private int edad;
   
   public Persona ()
   
   {
       nombre= "";
       edad=0;
   }
     
   public Persona (String nombre, int edad)
   {
       this.nombre=nombre;
       this.edad = edad;
   }
   
   public void setNombre(String nombre)
   {
       this.nombre=nombre;
   }
       
   public void setEdad(int edad)
   {
      this.edad = edad;
   }
   
   public String getNombre()
   {
       return nombre;
   }
   
   public int getEdad()
   {
       return edad;
   }
}

PabloPbl

#4
En el case 2 intenta poniendo esto:

Código (java) [Seleccionar]

case 2:    System.out.println("edad:"+persona.getEdad());
                     System.out.println("nombre:"+persona.getNombre());
                     break;


Seguro, que estas haciéndolo como estoy creyendo, puedes mostrar la clase completa? please

Finishim

Cita de: PabloPbl en 30 Abril 2015, 19:22 PM
En el case 2 intenta poniendo esto:

Código (java) [Seleccionar]

case 2:    System.out.println("edad:"+persona.getEdad());
                     System.out.println("nombre:"+persona.getNombre());
                     break;


Seguro, que estas haciéndolo como estoy creyendo, puedes mostrar la clase completa? please

pablo, asi mismo como dices lo tengo en el case 2, ahora modifique el post de arriba que lo tenía como cltNuevo, que era de otro codigo. Lo tenia como dices pero no anda, que clase quieres que muestre ? la del void main ?? por que la clase persona es todo lo que hay alli

Código (java) [Seleccionar]

import java.util.Scanner;
public class interfaz
{
    private static Scanner lector=new Scanner(System.in);
   
    public static void main ()
    {
        int op=0; int i=0;
do{
        System.out.println("---M E N U---");
        System.out.println("1) Ingesa datos");
        System.out.println("2) Mostrar datos");
        System.out.println("3) Salir");
        op = lector.nextInt();
        System.out.flush();
        Scanner lector=new Scanner(System.in);
        Persona persona=new Persona();

          switch(op){

            case 1:   System.out.println("Ingrese nombre");
                      String nombre=lector.nextLine(); // aqui deberia guardar el dato
                      persona.setNombre(nombre);  // y aqui pasarselo al metodo set para despues ser mostrado, o no?

                      System.out.println("Ingrese edad");
                      int edad=lector.nextInt();  // guardamos
                      persona.setEdad(edad);   // pasamos a setEdad
                      break;



           case 2:    System.out.println("edad:"persona.getEdad());
                      System.out.println("nombre:"persona.getNombre());
                      break;






                }
      }  while(op<=3);
}
}

PabloPbl

No pongas el objeto persona que creas dentro del ciclo, por que si no cada vez que  ejecute el ciclo se creara un objeto nuevo.

Ponlo dentro del main, pero, no dentro del ciclo.

Saludos.