¿Contenido de un archivo txt a matriz?

Tengo este código para poder pasar lo que hay en un archivo txt a una matriz.

1. Tengo el archivo txt llamado (archivo) - dentro del archivo tengo las sgt palabras separadas por una coma así:

Casa, house

Carro, car

Reloj, clock


El objetivo es leer el txt y coger casa, house y las otras y usando split separar la palabra y ponerla en una una matriz así:

Casa house

Carro car

Reloj clock

Ahora tengo el código que lee el txt y usando split lo pasa a una matriz pero me sale un error en la estructura no se que pueda ser.

File archivo;

FileReader fr;

try { archivo = new File ("C://archivo.txt");

fr = new FileReader (archivo);

BufferedReader br = new BufferedReader(fr);

String linea; String delimiter = " , " ;
String matriz[][]= new String[3][2];
int i=0; while((linea=br.readLine())!=null) {

String[] a=linea.split(delimiter);

matriz [ i ] [ 0 ]=a [ i ];

matriz [ i ] [ 1 ]=a [ i ];
i++;

}

System.out.print ("MATRIZ");

for (int h= 0; h <matriz.length; h++) {

for(int o= 0; o <matriz[0].length; o++) {

System.out.print(matriz[h][o] + " ");

}

}

System.out.println(" ");

}catch(IOException e){

System.out.println(e);

}

}

}

Les agradecería la ayuda gracias

2 respuestas

Respuesta
2

el problema que tienes es que la matriz a[] donde guardas la cadena dividida solo tiene 2 elementos a[0] y a[1], entonces las lineas

matriz [ i ] [ 0 ]=a [ i ];
matriz [ i ] [ 1 ]=a [ i ];

deben escribirse

matriz [ i ] [ 0 ]=a [ 0 ];
matriz [ i ] [ 1 ]=a [ 1 ];

Y con eso se soluciona el problema

Hola

mira ya lo cambie por lo que dijiste y sigue saliendo el mismo error de ArrayIndexOutOfBoundsException en esta linea

---> matriz[ i ] [ 0 ]=a[ 0 ];

matriz[ i ][ 1 ] =a[ 1 ];

gracias

El error que cometes es establecer distintos criterios para crear el array y para recorrerlo (cuando estas llenando el array). Cuando lo creas, estableces como limite de las filas un limite fijo (3); pero cuando lo llenas, para recorrerlo, estableces como criterio el contenido del archivo, sin comprobar que en dicho archivo hay exactamente 3 lineas. De hecho, el error unicamente se produce cuando el archivo tiene 5 o mas lineas, contando la ultima linea como fin de archivo (EOF).

Para solucionar el error, debes modificar la linea

while((linea=br.readLine())!=null) {

por

while(((linea=br.readLine())!=null) & (i < 3)) {

Respuesta

Con este código soluciona el problema y quitar los espacio entre líneas del txt

package pruebas_en_clase;

import java.io.*;

public class pick_txt {

public static void main(String[] args) {
File archivo=null;
FileReader fr=null;
BufferedReader br=null;
try {
archivo = new File (System.getProperties().getProperty("user.dir")+"//archivo.txt");

fr = new FileReader (archivo);

br = new BufferedReader(fr);

String linea;
String delimiter = "," ;
String matriz[][]= new String[3][2];
int h=0;
String a[]=new String[6];
while(((linea=br.readLine())!=null)&& (h<3)) {

a=linea.split(delimiter);
for(int j=0;j<a.length;j++)
{
matriz[h][j]=a[j];
}
h++;
}

System.out.print ("MATRIZ\n\n");
for (int j= 0; j <matriz.length; j++) {

for(int o= 0; o <matriz[0].length; o++) {

System.out.print(matriz[j][o] + " ");

}
System.out.println();
}
}
catch(IOException e){

System.out.println(e);
}

}

}

package pruebas_en_clase;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class pick_txt {

public static void main(String[] args) {
File archivo=null;
FileReader fr=null;
BufferedReader br=null;
try {
archivo = new File (System.getProperties().getProperty("user.dir")+"//archivo.txt");

fr = new FileReader (archivo);

br = new BufferedReader(fr);

String linea;
String delimiter = "," ;
String matriz[][]= new String[3][2];
int h=0;
String a[]=new String[6];
while(((linea=br.readLine())!=null)&& (h<3)) {

a=linea.split(delimiter);
for(int j=0;j<a.length;j++)
{
matriz[h][j]=a[j];
}
h++;
}

System.out.print ("MATRIZ\n\n");
for (int j= 0; j <matriz.length; j++) {

for(int o= 0; o <matriz[0].length; o++) {

System.out.print(matriz[j][o] + " ");

}
System.out.println();
}
}
catch(IOException e){

System.out.println(e);
}

}

}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas