Suma y Resta matrices de .txt y guardar resultado en .txt con JAVA

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

Sobre Gustavo Zimbrón 188 artículos
Apasionado por la programación y la tecnología, me gustan los retos y aprender siempre cosas nuevas.
Subscribe
Notify of
guest

0 Comentarios
Oldest
Newest Most Voted
Inline Feedbacks
View all comments