-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMatrizTexto.java
104 lines (91 loc) · 3.36 KB
/
MatrizTexto.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
package xyz.germanfica.util;
import java.util.Scanner;
public class MatrizTexto {
private static Scanner scCargaFilaDesdeArchivo;
private static Scanner scCargaDesdeArchivo;
/*
* Muestra todos los elementos de una matriz de texto
* seperados con un espacio
*/
public static void mostrarConEspacio(String[][] matrizTexto) {
// Declaracion de variables
int cantFilas, cantColumnas;
// Inicializacion de variables
cantFilas = matrizTexto.length;
cantColumnas = matrizTexto[0].length;
for (int i = 0; i <= cantFilas-1; i++) {
for (int j = 0; j <= cantColumnas-1; j++) {
System.out.print(matrizTexto[i][j]);
System.out.print(" ");
}
System.out.println();
}
}
/*
* Se requiere para el módulo 'cargaDesdeArchivo(ARCHIVO)'.
*/
private static String[] cargaFilaDesdeArchivo(String contenidoFila, int cantColumnas) {
// Declaración de variables
String[] arreglo;
int j;
// Inicializacion de variables
arreglo = new String[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();
j++;
}
return arreglo;
}
/**
* Carga una matriz de texto 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 texto cargada con los elementos
* del archivo.
*/
public static String[][] cargaDesdeArchivo(String ARCHIVO) {
// Declaración de variables
String[][] matrizTexto;
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];
matrizTexto = new String[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();
matrizTexto[i] = cargaFilaDesdeArchivo(contenidoFila, cantColumnas);
i++;
}
return matrizTexto;
}
}