[ Foro de Java ]

Pasar valor de un atributo de una clase a otra

13-Mar-2014 20:05
Angel Bravo
3 Respuestas

Por un lado, tengo la clase principal:

 
class Principal{
     public static void main(String[] args) {
        MenuAplicacion menu = new MenuAplicacion();
        menu.menuInicial();
       }
}
 


Y por otro lado, tengo la clase Menu (en otro archivo):

 
class Menu {
	byte menuInicial() {
		teclado = new Scanner(System.in);
		byte seleccion; 
		System.out.println("1 para análisis A"); 
		System.out.println("2 para análisis B"); 
		seleccion = teclado.nextByte();
		System.out.println(seleccion);
		return seleccion;
}
 


Mi problema es que quiero que la clase "Principal" recoja el atributo "selección" de la clase "Menu", para seguir desarrollando el programa, algo tipo:

 
switch (seleccion) {
			case 1:
				System.out.println("A");
				break;
			case 2:
                                System.out.println("B");
				break;
		}
 


Dentro de la clase principal. No quiero una llamada al método desde la clase principal, sino desde la clase principal, acceder al valor que devuelve ese método. Seguro que es una tontería, pero no doy con la forma, muchas gracias.


13-Mar-2014 20:20
Angel Bravo

Acabo de caer en la cuenta que al simplificar el código para la pregunta, olvidé ajustar correctamente los nombres de las clases/objetos, pero ese no es el problema, todo eso está bien y no hay problema con eso. Repito el código y lo pongo con el sangrado correcto para que resulte más sencillo de ver.

 
class Principal{ 
   public static void main(String[] args) { 
     MenuAplicacion menu = new MenuAplicacion(); 
     menu.menuInicial(); 
   } 
} 
 
class MenuAplicacion { 
   byte menuInicial() { 
      teclado = new Scanner(System.in); 
      byte seleccion; 
      System.out.println("1 para análisis A"); 
      System.out.println("2 para análisis B"); 
      seleccion = teclado.nextByte(); 
      System.out.println(seleccion); 
      return seleccion; 
   }
} 
 


Código que quiero poner en la clase principal del programa:

 
switch (seleccion) { 
   case 1: 
      System.out.println("A"); 
      break; 
case 2: 
     System.out.println("B"); 
     break; 
} 
 



15-Mar-2014 12:41
Nacho Cabanes (+31)

La forma habitual de acceder desde una clase a un atributo de otra es crear un método "Get" que te devuelva su valor.

En tu caso, está casi hecho ya, porque ese método "menuInicial" se está comportando como un Get, devolviendo el valor de la variable "seleccion" (que realmente no es un atributo, sino una variable local, porque sólo existe dentro de ese método).

Por tanto, deberías hacer

 
switch ( menu.menuInicial() ) {
 



16-Mar-2014 14:01
Angel Bravo

Duda resuelta, muchísimas gracias...llevaba con la tontería atascado demasiado tiempo...y ya tengo la siguiente duda xD






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)