¿Como puedo cargar una matriz con un archivo txt en java?

Ya lo intente pero me muestra un solo numero de cada linea y el resto de los datos como null

Este es el código.

package practica.examen;

import java.io.*;
import java.util.Scanner;

public class PracticaExamen {

/**
* @param args the command line arguments
*/
public static void main(String[] args) /*throws IOException*/ {
File archivo = null;
FileReader Fr = null;
BufferedReader br = null;
try {
archivo = new File ("C:\\archivo.txt");
Fr = new FileReader(archivo.toString());
br = new BufferedReader(Fr);
String linea; String delimiter=",";
String matriz [][]= new String[5][5];
int i=0;
int k = 0;
int l = 0;
while(((linea=br.readLine())!=null)) {
//System.out.println(linea);
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("");
}

}
System.out.println(" ");

}catch(IOException e){

System.out.println(e);
}
}
}

1 Respuesta

Respuesta
3
  1. No estás ingresando los datos de todas las columnas de cada una de tus filas.
  2. No estás imprimiendo correctamente tu matriz, por ello los número no salen como deberían.
  3. La razón de los null, es porque, como no estás ingresando los datos de todas las columnas, entonces estos están vacíos. Inicializaste tu matriz como 5 X 5, por lo tanto, debes ingresar todas las 5 columnas de las 5 filas; además de asegurarte de cada fila entre en tu Array "a".
  4. No haz puesto comentarios en tu código, eso hace más difícil ayudarte. Es una buena práctica poner guías si necesitas ayuda o si trabajas en equipo.

Te doy la solución que hallé.

package leertxt;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Leertxt {
    public static void main(String[] args) {
        File archivo = null;
        FileReader Fr = null;
        BufferedReader br = null;
        try {
            archivo = new File("E:\\archivo.txt");
            Fr = new FileReader(archivo.toString());
            br = new BufferedReader(Fr);
            String linea;
            String delimiter = ",";
            //Matriz estática de 2 x 5
            String matriz[][] = new String[2][5];
            //Cuenta las líneas y a la vez sería el número de filas
            int numlinea=0;
            //validación si existe línea
            while (((linea = br.readLine()) != null)) {
                //Imprime la línea
                //System.out.println(linea);
                //Guardar datos de linea en Array
                String a[]=linea.split(delimiter);
               //Bucle para poder ingresar todas las columnas del Array "a" que existan. TODAS.
                for (int l = 0; l < a.length; l++) {
                    //ingresamos los datos de cada columna de "a" a la matriz.
                    //"numlinea" hace de fila, "l" es el numero de la columna.
                    matriz[numlinea][l] = a[l];
                    //Prueba de que los datos están llenando la fila de la matriz.
                    //System.out.print(matriz[numlinea][l]+" ");  
                }
                //Incremento de numero de línea.
                numlinea++;
            }
            //Impresión de la matriz
             System.out.println("MATRIZ");
             System.out.println("------");
               for (int filas = 0; filas < matriz.length; filas++) {
                    for (int colum = 0; colum < matriz[filas].length; colum++) {
                        //Imprime las columnas de cada fila
                        System.out.print(matriz[filas][colum]+" ");
                    }
                    //Imprime uns alto de línea para cada fila
                    System.out.println();   
                }
        } catch (IOException e) {
            System.out.println(e);
        }
    }
}

Mi archivo .txt tiene lo siguientes datos:

1,2,3,4,5
6,7,8,9,10

Si tienes alguna duda o problema, con gusto te ayudaré.
Que te haya servido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas