Código para sumar y restar dos matrices leídas de un .txt con java, la primer linea, define las dimensiones de las matrices, en este caso es de 3×3 , las demás lineas contienen las matrices en sí.
El archivo que contiene las matrices se llama matricesAyB.txt y el resultado se guardará en el archivo resultado.txt
Para leer el fichero utilizaremos BufferedReader y para escribir el resultado en el archivo de texto PrintWriter.
Video explicando el código:
Aquí está el código de la clase SumadorMatrices3x3.java
[java]import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
/**
*
* @author Gustavo Zimbrón
*/
public class SumadorMatrices3x3 {
public static void main(String[] args) {
//Inicializamos las variables usadas para leer el fichero de las matrices
File archivo = null;
FileReader fr = null;
BufferedReader br = null;
FileWriter resultado = null;
PrintWriter pw = null;
// utilizamos un Try, Catch, Finally, para intentar abrir el archivo de texto de las matrices
try {
//instanciamos la variable con el archivo que contiene las matrices A y B
archivo = new File («matricesAyB.txt»);
// instanciamos el filereader con el archivo de txt
fr = new FileReader (archivo);
//instanciamos el bufferedreader
br = new BufferedReader(fr);
//la variable linea guarda temporalmente la linea del fichero
String linea;
// guardará las dimensiones de las matrices
Integer filas=0, columnas=0;
//Arreglo que contendrá las partes en las que separemos las lineas
String[] partes;
//Matrices A y B
Integer[][] matrizA, matrizB;
if((linea=br.readLine())!=null){
partes = linea.split(» «);
// obtiene las dimensaiones de la matriz ya que esta en la linea 0 del fichero
filas = Integer.valueOf(partes[0]);
columnas = Integer.valueOf(partes[1]);
}
// inicializamos los arreglos de las matrices A y B
matrizA = new Integer[filas][columnas];
matrizB = new Integer[filas][columnas];
// obtenemos los valores de la matriz A
for(int i = 0; i < filas; i++){
linea=br.readLine();
// separamos los espacios
partes = linea.split(» «);
// sub-for, para obtener las columnas, en caso que la matriz no sea cuadrada.
for(int j = 0; j < columnas; j++)
matrizA[i][j] = Integer.valueOf(partes[j]);
}
// obtenemos los valores de la matriz B
for(int i = 0; i < filas; i++){
linea=br.readLine();
// separamos los espacios
partes = linea.split(» «);
// sub-for, para obtener las columnas, en caso que la matriz no sea cuadrada.
for(int j = 0; j < columnas; j++)
matrizB[i][j] = Integer.valueOf(partes[j]);
}
System.out.println(«Se leyeron 2 matrices de dimensiones: «+filas + «x» + columnas);
// generamos el fichero con los resultados, primero la suma despues la resta
try
{
resultado = new FileWriter(«resultado.txt»);
pw = new PrintWriter(resultado);
System.out.println(«Sumando matrizA + matrizB…»);
pw.println(«matrizA + matrizB»);
//sumamos matrizA y matrizB
for(int i = 0; i < filas; i++){
for(int j = 0; j < columnas; j++){
pw.print((matrizA[i][j]+matrizB[i][j])+ «\t»);
}
pw.println(«»);
}
System.out.println(«Restando matrizA – matrizB…»);
pw.println(«matrizA – matrizB»);
//restamos matrizA y matrizB
for(int i = 0; i < filas; i++){
for(int j = 0; j < columnas; j++){
pw.print((matrizA[i][j]-matrizB[i][j])+ «\t»);
}
pw.println(«»);
}
System.out.println(«Finalizado y guardado en resultado.txt.»);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != resultado)
resultado.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
catch(Exception e){
e.printStackTrace();
}finally{
// En el finally cerramos el fichero, para asegurarnos
// que se cierra tanto si todo va bien como si salta
// una excepcion.
try{
if( null != fr ){
fr.close();
}
}catch (Exception e2){
e2.printStackTrace();
}
}
}
}[/java]
Descargar Proyecto Netbeans:
SumadorMatrices3x3