Arreglos Bidimensionales en java Son estructuras de tamao
Arreglos Bidimensionales en java
• Son estructuras de tamaño fijo organizadas por filas y columnas. • Estas estructuras almacenan valores del MISMO TIPO de dato. • Cada posición se identifica por la fila y la columna • Por lo general, estas estructuras se conocen con el nombre de matrices. columnas 0 Ejemplo: 3 filas 5 columnas filas Este arreglo es de tamaño 3 x 5 0 1 2 3 4
¿Cómo se define un arreglo bidimensional en java? Si se va a definir un arreglo bidimensional de tipo entero de 3 filas y 5 columnas, llamado matriz, sería así: Si se va a definir un arreglo bidimensional de tipo real de 2 filas y 2 columnas llamado matriz, sería así: int matriz[][] = new int [3][5]; double matriz[][]=new double[2][2]; Primero va el número de filas y luego el número de columnas
¿Cómo se guardan los elementos en un arreglo bidimensional? Se utiliza el nombre de la matriz, seguido de paréntesis cuadrado con el número de la fila y posteriormente otro paréntesis cuadrado con el número de la columna K Ejemplo: Si se desea ingresar el valor 6 en la fila 2, columna 3, de la matriz K, se haría así: 0 1 2 3 0 1 K[2][3] = 6; 2 6 4
¿Cómo se accede a los datos almacenados en un arreglo bidimensional? K 0 1 2 3 4 0 10 5 1 2 8 1 23 9 7 12 21 2 12 4 11 6 40 Si se quiere tener acceso a sólo una posición de la matriz, se hace así: System. out. println(K[1][1]); Imprime 9 por consola que es el valor almacenado en la fila 1, columna 1
Si del mismo arreglo bidimensional, queremos sumar 3 posiciones puntuales, lo haremos así: int suma = K[2][0] + K[0][2]+ K[1][4]; Suma = 12 + 1 + K[0][2] 21 K[1][4] Suma = 34 K[2][0] K 0 1 2 3 4 0 10 5 1 2 8 1 23 9 7 12 21 2 12 4 11 6 40
¿Cómo se recorren los arreglos bidimensionales con ciclos repetitivos? matriz 0 1 2 0 10 5 1 1 23 9 7 Es necesario utilizar dos ciclos repetitivos para recorrer un arreglo bidimensional, uno para las filas y uno para las columnas. Un ciclo se incluye dentro del otro. for (int i=0; i<2 ; i++) for (int j=0; j<3 ; j++) System. out. print(matriz[i][j]); Para el ejemplo del arreglo llamado matriz, los datos que imprime son: 10 5 1 23 9 7
Recorriendo primero filas y después columnas Número de filas Número de columnas El ciclo externo recorre las filas for (int i=0; i<2; i++) for (int j=0; j<3 ; j++) System. out. println(matriz[i][j]); Ciclo externo Matriz 0 1 i 0 1 2 10 5 1 23 9 7 0 1 Ciclo interno j 0 1 2 El ciclo interno recorre las columnas Matriz [i][j] 10 5 1 23 9 7 Mientras la variable externa i (fila) hace una iteración, la variable interna j (columna), recorre todas las columnas.
Recorriendo primero columnas y después filas El ciclo externo recorre las columnas Número de filas Número de columnas for (int j=0; j<3; j++) for (int i=0; i<2 ; i++) System. out. println(matriz[i][j]); Ciclo externo Matriz j 0 1 2 0 10 5 1 1 23 9 7 0 1 2 Ciclo interno El ciclo interno recorre las filas La matriz se sigue accediendo primero fila (i) y luego columna (j) Matriz [i][j] i 0 1 0 1 [0][0] [1][0] [0][1] [1][1] [0][2] [1][2] 10 23 5 9 1 7 Para imprimir primero las columnas y luego las filas se intercambian los ciclos. El ciclo externo se deja para las columnas y el interno para las filas.
EJEMPLOS Diseñe un programa que permita solicitar por pantalla la cantidad de estudiantes y las notas obtenidas en una asignatura el programa debe permitir ver los estudiantes con sus notas, el promedio de sus notas y cual de los estudiantes obtuvo la nota mas alta y cual la más baja.
package pruebaborrrar; import java. io. IOException; import javax. swing. JOption. Pane; public class borro { public static void main(String[] args) throws IOException { int x, y, indice; double mayor, menor; x=Integer. parse. Int(JOption. Pane. show. Input. Dialog("ingrese la cantidad de estudiantes: ")); y=Integer. parse. Int(JOption. Pane. show. Input. Dialog("ingrese la cantidad de notas x materia ")); double notas[][] = new double[x][y]; String nombres[] = new String[x]; double notafinal[] = new double[x]; // almacenar valores en el vector for (int i=0; i < x; i++) { nombres[i]= JOption. Pane. show. Input. Dialog("Introduzca el Nombre "); for (int r=0; r<y; r++) { notas[i][r]=Float. parse. Float( JOption. Pane. show. Input. Dialog(null, "Introduzca la Nota "+(r+1))); } } // mostrar elementos del vector String estudiante=""; for (int j=0; j < x; j++) { estudiante= estudiante + nombres[j]+"n"+ "Las nota son"+"n"; for (int r=0; r<y; r++) { estudiante= estudiante + notas[j][j]+" "; } JOption. Pane. show. Message. Dialog ( null, "Estudiante n"+estudiante, "Programa de ejemplo", JOption. Pane. INFORMATION_MESSAGE); estudiante=""; }
double promedio=0; // Calcular promedio de estudiantes for (int i=0; i < x; i++) { promedio = 0; for (int j=0; j < y; j++) { promedio=promedio + notas[i][j]; } notafinal[i]= promedio/y; } // muestra los estudiantes con su promedio estudiante=""; for (int j=0; j < x; j++) { estudiante= estudiante + "El nombre es "+nombres[j]+" promedio: "+notafinal[j]+"n"; } JOption. Pane. show. Message. Dialog ( null, "Elementos del vectorn"+estudiante, "Programa de ejemplo", JOption. Pane. INFORMATION_MESSAGE); // calcula el estudiante con mayor promedio mayor =notafinal[0]; indice=0; for (int j=0; j < nombres. length; j++) { if (mayor < notafinal[j]) { mayor =notafinal[j]; indice=j; } } JOption. Pane. show. Message. Dialog(null, "El estudiante con la nota mayor es "+nombres[indice]+" La nota es: "+notafinal[indice]+"n"); // estudiante con menor nota menor =notafinal[0]; indice=0; for (int j=0; j < nombres. length; j++) { if (menor > notafinal[j]) { menor =notafinal[j]; indice=j; } } JOption. Pane. show. Message. Dialog(null, "El estudiante con la nota menor es "+nombres[indice]+" La nota es: "+notafinal[indice]+"n");
- Slides: 12