BufferedReader: Objeto que lee texto de un flujo de entrada de caracteres y almacena cada línea en la memoria. String array: Arreglo de cadenas de texto. 2D int array: Arreglo bidimensional de enteros.
Tengo un archivo .txt que contiene texto que me gustaría guardar en una cadena, parte en una matriz de cadenas y luego la última parte en una matriz bidimensional de enteros, y me enfrento a dos problemas:
- ¿Cómo leer y guardar las dos matrices cuando su tamaño no se conoce de antemano?
- La matriz bidimensional no se lee/guarda correctamente.
Aquí está el archivo de texto de referencia:
Esta es la oración que se va a leer.
Esto
es
una
matriz
de cadenas.
90 47 110 95 95
101 87
54 0 38 12
Aquí está parte de mi método que se supone que debe leer y guardar los tres tipos de datos:
BufferedReader br = new BufferedReader(new FileReader(fileName));
sentence = br.readLine();
stringArr = new String[5]; // ¿cómo inicializar sin un número fijo de elementos?
for(int i = 0; i<stringarr.length; i++){="" stringarr[i]="br.readLine();" }="" int2darr="new" int[3][5];="" ¿cómo="" inicializar="" con="" cualquier="" cantidad="" de="" filas="" y="" columnas?="" for(int="" i="0;"></stringarr.length;><int2darr.length; i++){="" for(int="" j="0;"></int2darr.length;><int2darr[i].length; j++){
int2darr[i][j] = br.read();
// ¿cómo leer el espacio después de cada entero?
}
}
¿cómo puedo obtener el tamaño de las matrices leyendo el archivo de texto, para que cuando inicialice ambas matrices, tenga los tamaños correctos? ¡cualquier ayuda sería muy apreciada! j++){=”” int2darr[i][j]=”br.read();” ¿cómo=”” leer=”” el=”” espacio=”” después=”” de=”” cada=”” entero?=”” }=”” }=”” ="" ¿cómo="" puedo="" obtener="" el="" tamaño="" de="" las="" matrices="" leyendo="" el="" archivo="" de="" texto,="" para="" que="" cuando="" inicialice="" ambas="" matrices,="" tenga="" los="" tamaños="" correctos?="" ¡cualquier="" ayuda="" sería="" muy=""></int2darr[i].length; j++){
int2darr[i][j] = br.read();
// ¿cómo leer el espacio después de cada entero?
}
}
¿cómo puedo obtener el tamaño de las matrices leyendo el archivo de texto, para que cuando inicialice ambas matrices, tenga los tamaños correctos? ¡cualquier ayuda sería muy apreciada!>
davy.ai
Solución
Para leer y guardar ambas matrices cuando su tamaño no se conoce de antemano, puedes usar un
ArrayList
para leer cada línea del archivo y luego convertirla en una matriz. Para la matriz 2D, puedes usarArrayLists
anidados para almacenar los valores de cada fila y luego convertirlos en una matriz 2D.Aquí te muestro cómo puedes modificar tu código:
En este código, leemos cada línea del archivo usando
readLine()
y lo agregamos a unArrayList
para el arreglo de strings yArrayLists
anidados para la matriz 2D. Usamossplit()
para dividir la línea en tokens y convertirlos en enteros antes de agregarlos a la lista de filas. Finalmente, convertimos cada lista de filas en una matriz y la almacenamos en la matriz 2D. Ten en cuenta que podemos usar el métodosize()
delArrayList
para determinar el tamaño de cada matriz.Para la matriz 2D, usamos un
int[][]
en lugar de unArrayList<><integer>>
para almacenar los datos con fines de eficiencia.¡Espero que esto te sea de ayuda!