Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ElChulon en 28 Julio 2016, 07:37 am



Título: [Duda] Clases abstractas
Publicado por: ElChulon en 28 Julio 2016, 07:37 am
Buenas a todos! Estoy aprendiendo Java y tengo un problemita

Tengo un proyecto en Java que estoy desarrollando, este es mi código:

Código
  1. public class Estudiante_Postgrado extends Estudiante {
  2.  
  3.  
  4.  
  5.    public void postgrado(){
  6.        System.out.println("Ingrese sus datos de Estudiante de Post-Grado: ");
  7.    }
  8.    public void nombre(){
  9.        String nombre = "";
  10.        System.out.println("Ingrese su nombre: ");
  11.        Scanner entrada = new Scanner(System.in);  
  12.        nombre = entrada.nextLine();
  13.  
  14.    }
  15.  
  16.    public void matricula() {
  17.        int matricula = 0;
  18.        System.out.println("Ingrese su matricula: ");
  19.        Scanner entrada = new Scanner(System.in);  
  20.        matricula = entrada.nextInt();
  21.    }
  22.  
  23.    public void tituloDeGrado() {
  24.        String titulo = "";
  25.        System.out.println("Titulo de grado: ");
  26.        Scanner entrada = new Scanner(System.in);  
  27.        titulo = entrada.nextLine();
  28.    }
  29.  
  30.    public void universidad() {
  31.        String universidad = "";
  32.        System.out.println("Ingrese su universidad: ");
  33.        Scanner entrada = new Scanner(System.in);  
  34.        universidad = entrada.nextLine();
  35.    }
  36.  
  37.    public void maestria() {
  38.        String maestria = "";
  39.        System.out.println("Ingrese la Maestria o Doctorado cursando: ");
  40.        Scanner entrada = new Scanner(System.in);  
  41.        maestria = entrada.nextLine();
  42.    }
  43.  
  44.    public void imprimir (){
  45.  
  46.       System.out.println("Nombre: ");
  47.  
  48.    }

El programa me corre perfectamente, pero el problema, como pueden ver, es que public void imprimir () no tiene prácticamente nada, es porque todo lo que he hecho allí me esta dando error. Mi pregunta es: ¿Es posible poder llamar los resultados de otros métodos para poder meterlos en imprimir y mostrarlos en main.java? osea, si yo coloco System.out.println("Nombre: "+nombre) me da error, dice como que si la variable no existiera. Espero que me haya explicado bien y me puedan haber entendido. Si necesitan más de mi código me dicen!

¿Esta correcta la estructura que lleva este código?

Pasen buenas!

 


Título: Re: [Duda] Clases abstractas
Publicado por: Octsam en 28 Julio 2016, 12:53 pm

Una variable encerrada entre dos llaves cualesquiera, son locales, y fuera de tales llaves no existirá. Incluso si escribo:
Código:
    {
        int i;
    }
   
    i = 0;

Tendré un error, porque la variable 'i' existe solamente dentro de las llaves, y no fuera.

En tu caso particular, la variable 'nombre' está en el cuerpo de una función, por lo que será local a tal función. No podrás usarla fuera de ella. Así que si quieres hacerlo, tendrás que poner tal variable fuera de la función, y ponerle su valor llamando a tal función. Y para que quede más claro; yo pondría:



Código:
    public class Estudiante_Postgrado extends Estudiante {
       
        String nombre;
       
        public void postgrado(){
            System.out.println("Ingrese sus datos de Estudiante de Post-Grado: ");
        }
   
        ...
    }
   



Título: Re: [Duda] Clases abstractas
Publicado por: duvancg en 29 Julio 2016, 01:14 am
En tu caso quedaría así:
Código
  1. public class Estudiante_Postgrado extends Estudiante {
  2.  
  3. private String nombre = "";
  4.  
  5.  
  6.    public void postgrado(){
  7.        System.out.println("Ingrese sus datos de Estudiante de Post-Grado: ");
  8.    }
  9.    public void nombre(){
  10.  
  11.        System.out.println("Ingrese su nombre: ");
  12.        Scanner entrada = new Scanner(System.in);  
  13.        nombre = entrada.nextLine();
  14.  
  15.    }
  16.  
  17.    public void matricula() {
  18.        int matricula = 0;
  19.        System.out.println("Ingrese su matricula: ");
  20.        Scanner entrada = new Scanner(System.in);  
  21.        matricula = entrada.nextInt();
  22.    }
  23.  
  24.    public void tituloDeGrado() {
  25.        String titulo = "";
  26.        System.out.println("Titulo de grado: ");
  27.        Scanner entrada = new Scanner(System.in);  
  28.        titulo = entrada.nextLine();
  29.    }
  30.  
  31.    public void universidad() {
  32.        String universidad = "";
  33.        System.out.println("Ingrese su universidad: ");
  34.        Scanner entrada = new Scanner(System.in);  
  35.        universidad = entrada.nextLine();
  36.    }
  37.  
  38.    public void maestria() {
  39.        String maestria = "";
  40.        System.out.println("Ingrese la Maestria o Doctorado cursando: ");
  41.        Scanner entrada = new Scanner(System.in);  
  42.        maestria = entrada.nextLine();
  43.    }
  44.  
  45.    public void imprimir (){
  46.  
  47.       System.out.println("Nombre: "+nombre);
  48.  
  49.    }
  50.  
Saludos.


Título: Re: [Duda] Clases abstractas
Publicado por: hectornunezrivas en 31 Julio 2016, 16:36 pm
Hola.
Bueno como mencionan los compañeros anteriores. tus variables están encerradas en un método lo cual las hace locales. Debes de ponerlas globales para que cualquier parte del programa las reconozca. Entonces si quieres hacer tus variables globales hazlo de la siguiente manera.

Código:
public class Estudiante_Postgrado extends Estudiante {
 
private String nombre = "", titulo = "", universidad = "", maestria = "";
private int matricula = 0;
 
 
    public void postgrado(){
        System.out.println("Ingrese sus datos de Estudiante de Post-Grado: ");
    }
    public void nombre(){
        System.out.println("Ingrese su nombre: ");
        Scanner entrada = new Scanner(System.in); 
        nombre = entrada.nextLine();
    }
 
    public void matricula() {
        System.out.println("Ingrese su matricula: ");
        Scanner entrada = new Scanner(System.in); 
        matricula = entrada.nextInt();
    }
 
    public void tituloDeGrado() {
        System.out.println("Titulo de grado: ");
        Scanner entrada = new Scanner(System.in); 
        titulo = entrada.nextLine();
    }
 
    public void universidad() {
        System.out.println("Ingrese su universidad: ");
        Scanner entrada = new Scanner(System.in); 
        universidad = entrada.nextLine();
    }
 
    public void maestria() {
        System.out.println("Ingrese la Maestria o Doctorado cursando: ");
        Scanner entrada = new Scanner(System.in); 
        maestria = entrada.nextLine();
    }
 
    public void imprimir (){
 
       System.out.println("Nombre: "+nombre);
 
    }

De esta forma ya se pueden reconocer tus variables en imprimir y las puedes mandar a llamar.
Saludos