Java - Problema al mostrar datos entre clases "agenda.Persona@14991ad"

   
Vista:

Problema al mostrar datos entre clases "agenda.Persona@14991ad"

Publicado por Yuner (3 intervenciones) el 27/03/2016 23:52:32
Buenas compañeros, necesito ayuda con un pequeño problema que tengo, soy estudiante de ingenieria en programacion, estoy empezando, apenas conozco lo basico.
Primero el proposito del proyecto que estoy haciendo, es crear una "Agenda de telefonos", que se va a manejar con clases, creo que tengo todos los metodos y atributos necesarios y al parecer todo funciona correctamente, el problema es al querer mostrar los datos, cuando se imprime en pantalla esto es la respuesta: agenda.Persona@14991ad
No hay ningun error en la ejecicion, es solo eso, a continuacion dejo el codigo:

Clase main:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
package agenda;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Scanner;
 
public class Agenda {
 
    Persona[] listaPersonas;
    TelefonoPersona[] listaTelefonos;
 
    int pos; //Posicion
    public Agenda()
    {
        listaPersonas = new Persona[10];
        listaTelefonos =  new TelefonoPersona[20];
    }
 
    public void AgregarPersona()
	{
            String Nombre;
            String Apellido;
            int Cedula;
 
            Scanner entrada = new Scanner (System.in);
            System.out.println("Digite el nombre:");
            Nombre=entrada.next();
            System.out.println("Digite el apellido:");
            Apellido=entrada.next();
            System.out.println("Digite la cedula:");
            Cedula=entrada.nextInt();
            System.out.println("El nombre es: "+Nombre+" "+Apellido+
                    ", con la cedula: "+Cedula);
 
		Persona per = new Persona(Nombre, Apellido, Cedula);
		for(int i=0; i < listaPersonas.length; i++)
		{
			if (listaPersonas[i] == null)
			{
				listaPersonas[i]=per;
				break;
			}
		}
	}
 
        public void Mostrar ()
        {
        //Este for muestra la informacion de la persona
        for (int i=0; i<listaPersonas.length; i++)
        {
            if (listaPersonas[i]==null)
            {
                System.out.println("La posicion "+i+" esta vacia.");
            }
            else
            System.out.println("Persona en posicion "+i+" es: "+listaPersonas[i].getNombre()
                    +" "+listaPersonas[i].getApellido()+", cedula: "+listaPersonas[i].getCedula());
        }
        //Este for se supone muestra la informacion "Persona y Telefono"
        for (int i=0; i<listaTelefonos.length; i++)
        {
            if (listaTelefonos[i]==null)
            {
                System.out.println("La posicion "+i+" esta vacia.");
            }
            else
            System.out.println("Persona en posicion "+i+" es: "+listaTelefonos[i].getPersona()+" "+
                    listaTelefonos[i].getTelefono());
        }
        //Aca llamo los metodos mostrar
        Persona mostrar1 = new Persona();
        Telefono mostrar2 = new Telefono();
        mostrar1.MostrarPersona();
        mostrar2.MostrarTelefono();
 
        }
 
 
 
	public void AgregarTelAPersona()
	{
 
                          Scanner entrada = new Scanner (System.in);
		          System.out.println("Cual es el tipo de telefono:");
                          String Tipo=entrada.next();
                          System.out.println("Digite el numero de telefono:");
                          int Numero=entrada.nextInt();
                          Telefono tel = new Telefono(Tipo, Numero);
                          Mostrar();
                          System.out.println("Escoja la persona a agregarle el numero:");
                          int opc = entrada.nextInt();
                          Persona pers = listaPersonas[opc];
                          TelefonoPersona tp = new TelefonoPersona (pers, tel);
 
                          for (int i=0; i<listaTelefonos.length; i++)
                              if (listaTelefonos[i]==null)
                              {
                              listaTelefonos[i]=tp;
                              break;
                              }
 
	}
 
 
    private void MostrarMenu()
    {
        int opcion = 0;
 
        do
        {
            BufferedReader br = new BufferedReader(new InputStreamReader (System.in));
            System.out.println("1. Agregar Persona");
            System.out.println("2. Mostrar");
            System.out.println("3. Agregar telefono a persona");
            System.out.println("4. Salir");
            try
            {
                opcion = Integer.parseInt(br.readLine());
                switch (opcion)
                {
                    case 1:
                        AgregarPersona();
                        break;
                    case 2:
                        Mostrar();
                        break;
                    case 3:
                        AgregarTelAPersona();
                        break;
                    case 4:
                        System.out.println("Salir");
                        break;
                    default:
						System.out.println("Opcion invalida!!");
                }
            }
            catch(java.lang.NumberFormatException numberFormatException)
            {
                System.out.println("Debe ingresar un número.");
            }
            catch(IOException ioException)
            {
 
            }
        }
        while (opcion != 4);
    }
 
    public static void main(String []args)
    {
        Agenda menu = new Agenda();
        menu.MostrarMenu();
    }
}

Este es el codigo de la clase persona:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package agenda;
 
public class Persona {
 
 String Nombre;
 String Apellido;
 int Cedula;
 
   public void setNombre(String nombre){
 
      this.Nombre=nombre;
  }
 
  public String getNombre (){
 
      return Nombre;
  }
 
    public void setApellido(String apellido){
 
      this.Apellido=apellido;
  }
 
  public String getApellido(){
 
      return Apellido;
  }
 
    public void setCedula(int cedula){
 
      this.Cedula=cedula;
  }
 
  public int getCedula (){
 
      return Cedula;
  }
 
  public Persona (){
 
   Nombre="";
   Apellido="";
   Cedula=0;
 }
 
  public Persona (String nombre,String apellido,int cedula){
 
     this.Nombre=nombre;
     this.Apellido=apellido;
     this.Cedula=cedula;
 
  }
 
public void MostrarPersona()
{
    System.out.println("Persona: "+Nombre+" "+Apellido+" "+Cedula);
}
 
}

Este es el codigo de la clase telefono:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package agenda;
 
public class Telefono {
String Tipo;
int Numero;
 
public Telefono ()
{
Tipo="";
Numero=0;
}
 
public Telefono (String tipo, int numero)
{
this.Tipo=tipo;
this.Numero=numero;
}
 
public void setTipo (String tipo)
{
this.Tipo=tipo;
}
 
public void setNumero (int numero)
{
this.Numero=numero;
}
 
public String getTipo()
{
return Tipo;
}
 
public int getNumero()
{
return Numero;
}
 
public void MostrarTelefono()
{
    System.out.println("Telefono: "+Tipo+" "+Numero);
}
 
}

Y por ultimo el codigo de TelefonoPersona donde se pretende unir la informacion de telefono a persona:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package agenda;
 
public class TelefonoPersona {
 
Persona ObjetoPersona;
Telefono ObjetoTelefono;
 
public TelefonoPersona()
{
ObjetoPersona = new Persona();
ObjetoTelefono = new Telefono();
}
 
public TelefonoPersona(Persona objetoPersona, Telefono objetoTelefono)
{
this.ObjetoPersona=objetoPersona;
this.ObjetoTelefono=objetoTelefono;
}
 
public void setTelefono (Telefono objetoTelefono)
{
this.ObjetoTelefono=objetoTelefono;
}
 
public void setPersona (Persona objetoPersona)
{
this.ObjetoPersona=objetoPersona;
}
 
public Telefono getTelefono()
{
return ObjetoTelefono;
}
 
public Persona getPersona()
{
return ObjetoPersona;
}
 
public void MostrarTelPer()
{
    System.out.println("Per: "+ObjetoPersona+" "+ObjetoTelefono);
}
 
}

Ojala me puedan dar una pequeña ayuda, doy las gracias por adelantado!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema al mostrar datos entre clases "agenda.Persona@14991ad"

Publicado por Yamil Bracho (2072 intervenciones) el 28/03/2016 01:17:08
Sobrescribe el metodo toString() en la clase Persona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al mostrar datos entre clases "agenda.Persona@14991ad"

Publicado por Yuner (3 intervenciones) el 28/03/2016 01:38:04
Muchas gracias por la ayuda pero podrias ser un poco mas especifico? Que metodo deberia sobreescribir?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al mostrar datos entre clases "agenda.Persona@14991ad"

Publicado por Yamil Bracho (2072 intervenciones) el 28/03/2016 02:54:37
En la clase Persona agrega el siguiente metodo :
1
2
3
4
5
6
7
8
9
@Override
public String toString() {
  StringBuilder sb = new StringBuilder(1024);
  sb.append("Persona: Nombre=").append(Nombre);
  sb.append(", Apellido=").append(Apellido);
  sb.append(", Cedula=").append(Cedula);
 
  return sb.toString();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema al mostrar datos entre clases "agenda.Persona@14991ad"

Publicado por Yuner (3 intervenciones) el 29/03/2016 06:26:03
Muchas gracias, ya los pude solucionar, efectivamente con el metodo toString, pero tuve que agregarselo a las clases, persona y telefono persona y de la forma:
Clase Persona:
1
2
3
4
5
6
7
@Override
 
public String toString() {
 
  return Nombre+Apellido+Cedula;
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar