graphprogram_java/src/Matrix.java
2023-03-17 15:37:26 +01:00

91 lines
2.8 KiB
Java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileReader;
import java.io.FileNotFoundException;
public class Matrix {
private int[][] matrix;
public static void main(String[] args) {}
public Matrix(int rowLength, int columnLength) {
matrix = new int[rowLength][columnLength];
}
public Matrix(String file) {
matrix = this.readCSV(file);
}
public Matrix multiply( Matrix m) {
Matrix scalarProduct = null;
if(this.columnLength() != m.rowLength()) {
return scalarProduct;
}
scalarProduct = new Matrix(this.rowLength(), m.columnLength());
for(int columnIndex = 0; columnIndex < this.columnLength(); columnIndex++) {
for(int rowIndex = 0; rowIndex < m.rowLength(); rowIndex++) {
int sum = 0;
for(int k=0; k < this.rowLength(); k++) {
sum += this.getValue(columnIndex, k) * m.getValue(k, rowIndex);
}
scalarProduct.insert(columnIndex, rowIndex, sum);
}
}
return scalarProduct;
}
public int rowLength() {
return matrix.length;
}
public int columnLength() {
return matrix[0].length;
}
public int getValue(int columnIndex, int rowIndex) {
return matrix[columnIndex][rowIndex];
}
public void insert(int columnIndex, int rowIndex, int value) {
matrix[rowIndex][columnIndex] = value;
}
public void print() {
for(int columnIndex=0; columnIndex < matrix.length; columnIndex++) {
for(int rowIndex=0; rowIndex < matrix[columnIndex].length; rowIndex++) {
System.out.print(matrix[columnIndex][rowIndex]);
}
System.out.println();
}
}
public int[][] readCSV(String file){
int[][] intMatrix = null;
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line = br.readLine();
int rowCount = line.trim().split(";").length;
int columnCount = rowCount;
String[] lineArray = null;
intMatrix = new int[rowCount][columnCount];
for(int columnIndex = 0; line != null && columnIndex < intMatrix.length; columnIndex++, line = br.readLine()) {
lineArray = line.trim().split(";");
for(int rowIndex=0; rowIndex < intMatrix[columnIndex].length; rowIndex++) {
intMatrix[columnIndex][rowIndex] = Integer.parseInt(lineArray[rowIndex]);
}
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return intMatrix;
}
}