-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMatrizCaracter.java
128 lines (113 loc) · 3.95 KB
/
MatrizCaracter.java
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
package xyz.germanfica.util;
import java.util.Scanner;
/**
* Esta clase contiene utilidades para el manejo de matrices
* de caracteres.
*
* @author German Fica - {@link germanfica.xyz}
*/
public class MatrizCaracter {
private static Scanner scCargaFilaDesdeArchivo;
private static Scanner scCargaDesdeArchivo;
/*
* Muestra todos los elementos de una matriz de caracteres
*/
public static void mostrar(char[][] caracteres) {
// Declaración de variables
int cantFilas, cantColumnas;
// Inicializaicón de variables
cantFilas = caracteres.length;
cantColumnas = caracteres[0].length;
for (int i = 0; i <= cantFilas-1; i++) {
for (int j = 0; j <= cantColumnas-1; j++) {
System.out.print(caracteres[i][j]);
}
System.out.println();
}
}
/*
* Muestra todos los elementos de una matriz de caracteres
* seperados con un espacio
*/
public static void mostrarConEspacio(char[][] caracteres) {
// Declaración de variables
int cantFilas, cantColumnas;
// Inicializaicón de variables
cantFilas = caracteres.length;
cantColumnas = caracteres[0].length;
for (int i = 0; i <= cantFilas-1; i++) {
for (int j = 0; j <= cantColumnas-1; j++) {
System.out.print(caracteres[i][j]);
System.out.print(" ");
}
System.out.println();
}
}
/*
* Se requiere para el módulo 'cargaDesdeArchivo(ARCHIVO)'.
*/
private static char[] cargaFilaDesdeArchivo(String contenidoFila, int cantColumnas) {
// Declaración de variables
char[] arreglo;
int j;
// Inicialización de variables
arreglo = new char[cantColumnas];
j=0;
// Carga de elementos
scCargaFilaDesdeArchivo = new Scanner(contenidoFila); // Le digo al scanner que me analice el contenido del archivo
scCargaFilaDesdeArchivo.useDelimiter("\\s*,\\s*"); // Clasifica los elementos cuando encuntra un punto y coma
while(scCargaFilaDesdeArchivo.hasNext()) {
arreglo[j] = scCargaFilaDesdeArchivo.next().charAt(0);
j++;
}
return arreglo;
}
/**
* Carga una matriz de caracteres desde un archivo solicitado.
*
* Este módulo solo funciona si cumple con el siguiente formato:
* Los elementos de cada fila deben ir separados con una ','.
* Al final de cada columna debe terminar con un ';'.
*
* Ejemplo:
* Fila 0: 0,a,b,c,5,r;
* Fila 1: 0,3,9,t,5,z;
* Fila 2: f,5,5,3,2,d;
*
* Si existe una fila con mayor cantidad de elementos que
* las demas, la dimension de las filas será de dicha dimensión,
* es decir la de mayor cantidad de elementos. El valor de los
* elementos no asignados es por defecto ''.
*
* @param ARCHIVO ruta del archivo. Acá no va el contenido del archivo.
* Para obtener el contenido del archivo sólo basta con llamar al módulo
* Archivo.Leer(ARCHIVO), siendo ARCHIVO (la ruta)+(nombre del
* archivo con su extensión), ejemplo:
* ARCHIVO = "src/xyz/germanfica/ad/_2018/_2nd/tp3/Ej2.txt".
* @return Devuelve una matriz de caracteres cargada con los elementos
* del archivo.
*/
public static char[][] cargaDesdeArchivo(String ARCHIVO) {
// Declaración de variables
char[][] caracteres;
int[] dimensiones;
int cantFilas, cantColumnas, i;
String contenidoDelArchivo, contenidoFila;
// Inicialización de variables
contenidoDelArchivo = Archivo.leer(ARCHIVO).getTexto();
dimensiones = Matriz.dimensionesArchivo(contenidoDelArchivo);// Llamar al módulo que determina la cantidad de filas y columnas de la matriz del archivo
cantFilas = dimensiones[0];
cantColumnas = dimensiones[1];
caracteres = new char[cantFilas][cantColumnas];
i = 0;
// Carga de elementos
scCargaDesdeArchivo = new Scanner(contenidoDelArchivo); // Le digo al scanner que me analice el contenido del archivo
scCargaDesdeArchivo.useDelimiter("\\s*;\\s*"); // Clasifica los elementos cuando encuntra un punto y coma
while(scCargaDesdeArchivo.hasNext()) {
contenidoFila = scCargaDesdeArchivo.next();
caracteres[i] = cargaFilaDesdeArchivo(contenidoFila, cantColumnas);
i++;
}
return caracteres;
}
}