Java - Igualar arreglo de un metodo a otro metodo

 
Vista:

Igualar arreglo de un metodo a otro metodo

Publicado por Carlos Contreras Lomas (1 intervención) el 22/02/2017 05:53:39
Porque mi programa al momento de de imprimir los datos del arreglo Persona me pone en todo el arreglo los ultimos valores que habia introducido en vez de poner los primeros valores que introduje y despues los siguientes que introduje y asi sucesivamente.
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
import java.util.Scanner;
 
public class TestRegistro{
	public static void main(String args[]){
		Fecha f = new Fecha();
                   Registro R= new Registro();
                    Persona P = new Persona();
 
		int a = 0;
		while (a<5)
		{
			System.out.println("1.- Alta de persona");
			System.out.println("2.- Baja de una persona");
			System.out.println("3.- Cambios");
			System.out.println("4.- Imprimir informacion");
			System.out.println("5.- Salir");
			System.out.println("Introduzca la opcion que quiera: ");
			Scanner entrada = new Scanner (System.in);
			a = entrada.nextInt();
			switch(a)
			{
				case 1:
				String a1, b1, c1;
				int d,b,c;
				//Fecha f = new Fecha();
				entrada.nextLine();
				System.out.println("Nombre:");
				a1 = entrada.nextLine();
				System.out.println("Apellido Paterno:");
				b1 = entrada.nextLine();
				System.out.println("Apellido Materno:");
				c1 = entrada.nextLine();
				P. setNombre(a1);
				P. setapellidoPaterno(b1);
				P. setapellidoMaterno(c1);
				System.out.println("Dia:");
				d = entrada.nextInt();
				System.out.println("Mes:");
				b = entrada.nextInt();
				System.out.println("Anio:");
				c = entrada.nextInt();
				f.setdia(d);
				f.setmes(b);
				f.setanio(c);
				P.setFechaNacimiento(f);
				R.setRegistro(P);
				break;
				case 4:
				R.ImprimirRegistro();
			}
		}
	}
}

REGISTRO
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
public class Registro {
	public int numeroPersona=0;
	public Persona P[];
	int numBaja,a=0;
	public Fecha F;
	public Registro(){
	    P= new Persona[1000];
	}
 
	public void setRegistro( Persona P1){
	    System.out.println(P[numeroPersona].getNombre());
	    System.out.println(P1.getNombre());
	    P[numeroPersona]=P1;
	    System.out.println(P[numeroPersona].getNombre());
	    numeroPersona++;
	    a++;
	}
	public void ImprimirRegistro(){
		int a;
		for(a=0;a<numeroPersona;a++)
		{
		     System.out.println(a);
		    System.out.println("Nombre: "+P[a].getNombre());
		    System.out.println("Apeliido Paterno: "+P[a].getapellidoPaterno());
		    System.out.println("Apeliido Materno: "+P[a].getapellidoMaterno());
		    F =new Fecha ();
		    F=P[a].getFechaNacimiento();
		    System.out.println(F.imprimirfecha());
		}
	}
}
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

Igualar arreglo de un metodo a otro metodo

Publicado por Rubén (24 intervenciones) el 23/02/2017 16:51:30
Hola,

Cuando se quiere declarar un arrego o un array si un valor estático (fijo) predeterminado, es más aconsejable declarar un ArrayList<Persona> P = new ArrayList(), ya que irá generando memora según se necesite.
Con esto cuando quieras agregar un objeto persona al Array, tansolo tienes que poner P.add(objeto), y te los añadirá uno tras otro de forma ordenada, evitando así las variables de incremento que estás utilizando como "numeroPersona".

ArrayList también posee otros métodos dentro de su librería como size() que te devuelve el tamaño de dicho array.

Para realizar este cambio solo tienes que tocar la clase Registro y te quedará un código mas limpio

Espero haberte ayudado.

Un saludo y good programming! :-)
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