Java - Guardar datos que se pidan en vectores

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Guardar datos que se pidan en vectores

Publicado por Marco (7 intervenciones) el 14/03/2020 18:53:25
Aun no entiendo muy bien el como funcionan los vectores y matrices, necesito solicitarle datos al usuario y que lo que digite se guarde en un vector, por ejemplo tengo las preguntas y quiero guardarlas en un vector, cual o como seria la mejor opción

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package practicas;
 
import javax.swing.JOptionPane;
 
public class pruebas {
    String nombre;
    int cedula;
 
    public void solicitar(){
 
        nombre = JOptionPane.showInputDialog("Ingrese su nombre");
        int cedula = Integer.parseInt(JOptionPane.showInputDialog("Ingrese su cedula"));
    }
}
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Guardar datos que se pidan en vectores

Publicado por Kabuto (1381 intervenciones) el 14/03/2020 19:43:28
Un array o vector viene a ser casi lo mismo que una variable normal.
Solo que en una variable normal, solo puedes guardar un dato.
En un vector, puedes guardar muchos. Es una variable que tiene varios "compartimentos" para guardar datos.

Para leer/escribir esos datos, necesitas el nombre de la variable/vector y el índice, o sea, el número de posición que ocupa.
Si el vector tiene 10 espacios, estos se numeran del 0 al 9 (en algunos pocos lenguajes la numeración va del 1 al 10)

Esto es lo que se llama un array de una dimensión

Una matriz, en cambio, tiene dos dimensiones. Viene a ser como un array normal de una dimensión, solo que cada elemento de este array, ya no es un dato simple. Si no que cada elemento es a su vez otro array.
Por eso en este caso para acceder a los datos se necesitan dos índices.

Comparémoslo con casas.

Imagina una casa unifamiliar, sola, en una calle donde no hay más casas.
Para identificarla solo necesitas saber el nombre de la calle.
Esto equivale a una variable normal, solo necesitas saber su nombre.

Ahora imagina que en esa calle hay varias viviendas unifamiliares, cada una con su número único.
Para identificarlas ya no te vale solo el nombre de la calle, ahora también necesitas saber el número de dada una de ellas.
Esto equivale a un array de una dimensión, necesitamos nombre e indice.

Por último, supongamos que las casas ya no son unifamiliares, ahora son edificios de varios pisos.
Para identificar cada vivienda, ya no basta la calle y el número de edificio. Ahora también necesitamos el número de piso.
Esto equivale a una matriz, necesitamos su nombre y dos indices para acceder a cada elemento.


Bien, centrándonos en tu ejercicio.

Quieres guardar nombre y cédula. Aquí conviene matizar que para guardar una cédula, no es necesario usar el tipo de dato int.
Vale que una cédula está compuesta de números, pero en realidad no vamos a hacer operaciones matemáticas con esos números, por lo tanto no es necesario usar int. De hecho, es más cómodo y recomendable usar String.

Entonces, si hacemos que tanto nombre como cédula sean tipo String, esto nos da la ventaja de que podemos usar directamente una matriz, ya que vamos a guardar datos de un mismo tipo.

Si por algún motivo quisiéramos usar int para cédula y String para el nombre, entonces necesitaríamos dos vectores distintos. En realidad no es demasiado problema, solo implica que el código será distinto y que habrá que cuidar de que si el nombre de una persona está guardada en la posición 0 del vector de nombres, su cédula también se ha de guardar en la posición 0 del vector de cédulas.
Los datos han de compartir misma posición aunque estén en vectores distintos, de lo contrario, los datos de unas personas se mezclarán con los de otras y solo tendremos caos.

Esto sería un ejemplo usando dos vectores con distinto tipo de dato

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
public class CedulasConVector {
 
	static String[] nombres; //Vector para nombres
	static int[] cedulas; //Vector para cedulas
 
	public static void main(String[] args) {
 
		//Preguntamos cuanta personas se van a registrar
		int cantidad = Integer.parseInt(JOptionPane.showInputDialog("¿Cuántas personas va a registrar"));
 
		//Inicializamos vectores y pedimos datos.
		nombres = new String[cantidad];
		cedulas = new int[cantidad];
 
		for (int i = 0; i < cantidad; i++) {
			nombres[i] = JOptionPane.showInputDialog("Nombre de la Persona:");
			cedulas[i] = Integer.parseInt(JOptionPane.showInputDialog("Cédula:"));
		}
 
		//Mostramos datos recogidos en pantalla
		System.out.println("Datos registrados...\n");
		for (int i = 0; i < cantidad; i++)
			System.out.println("\tNombre: " + nombres[i] + " -- Cédula: " + cedulas[i]);
 
	}
 
}


Y este es el mismo ejemplo, pero usando una matriz porque vamos a tratar las cédulas como String, igual que el nombre.

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
public class CedulasConMatriz {
 
	static String[][] matrizDatos; //Matriz para nombre y cédulas
 
	public static void main(String[] args) {
 
		//Preguntamos cuanta personas se van a registrar
		int cantidad = Integer.parseInt(JOptionPane.showInputDialog("¿Cuántas personas va a registrar"));
 
		//Inicialimos matriz
		matrizDatos = new String[cantidad][2]; //Ponemos 2 porque por cada persona, registraremos 2 datos
 
		//Pedimos datos
		for (int i = 0; i < cantidad; i++) {
			matrizDatos[i][0] = JOptionPane.showInputDialog("Nombre de la Persona:"); //Nombre en subindice 0
			matrizDatos[i][1] = JOptionPane.showInputDialog("Cédula:"); //Cédula en subindice 1
		}
 
		//Mostramos datos recogidos en pantalla
		System.out.println("Datos registrados...\n");
		for (int i = 0; i < cantidad; i++)
			System.out.println("\tNombre: " + matrizDatos[i][0] + " -- Cédula: " + matrizDatos[i][1]);
 
	}
 
}


Fíjate que en ambos casos necesitamos saber, o al menos determinar, qué cantidad de personas vamos a registrar.

Esto es porque los arrays, ya sean vectores o matrices, son estáticos, es decir, tienen una longitud fija que no se puede alterar durante el curso del programa. No pueden crecer ni hacerse más pequeños.

Hay otros tipos de estructuras que son dinámicas, es decir, no requieren un tamaño fijo porque pueden crecer o disminuir durante la ejecución del programa.
Supongo que más adelante ya te lo explicarán, de momento céntrate en comprender los arrays básicos.
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
sin imagen de perfil
Val: 10
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Guardar datos que se pidan en vectores

Publicado por Marco (7 intervenciones) el 14/03/2020 20:06:53
Perfecto ya me queda bastante claro el como poder realizarlo, muchas gracias por el dato.
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