So, I've been given a .txt file that contains two 3x3 matrices and need to carry those matrices to add, multiply, subtract and do a scalar multiplication, where the program would take only one matrix and the user would input a number for the operation.
The problem is getting the program to read only the matrices.
Here is the .txt file I've been given, where the first two numbers are the size:
3 3
12 34 45
34 -12 56
76 12 -1
@
3 3
8 13 45
67 0 12
12 -12 3
Any life saver out there?
EDIT1
This is what i have so far, the multiply method was working whe I was letting the user input the matrix but now is just giving some odd answer, what am I missing?
import java.io.*;
public class ReadingTest {
public static void main(String[] args) throws IOException {
BufferedReader reader;
reader = new BufferedReader(new FileReader("matrix2.txt"));
String firstDimension = reader.readLine();
String[] split = firstDimension.split(" ");
int firstX = Integer.parseInt(split[0]);
int firstY = Integer.parseInt(split[0]);
int[][] first = new int[firstX][firstY];
for (int i = 0; i < firstX; i++) {
String[] line;
line = reader.readLine().split(" ");
for (int j = 0; j < firstY; j++) {
first[i][j] = Integer.parseInt(line[j]);
}
}
// Read "@"
reader.readLine();
String secondDimension = reader.readLine();
String[] split2 = secondDimension.split("");
int secX = Integer.parseInt(split2[0]);
int secY = Integer.parseInt(split2[0]);
int[][] second = new int[secX][secY];
for (int i = 0; i < secX; i++) {
String[] line;
line = reader.readLine().split(" ");
for (int j = 0; j < secY; j++) {
second[i][j] = Integer.parseInt(line[j]);
}
}
// System.out.println(Arrays.deepToString(second));
multiply(first, second);
reader.close();
}
public static void multiply(int[][] first, int[][] second) {
for (int i = 0; i < first.length; i++) {
int total = 0;
for (int j = 0; j < second[0].length; j++) {
int fnum = first[i][j];
int snum = second[j][i];
int product = fnum * snum;
total += product;
}
System.out.print(total + " ");
}
}
}
You have to:
read first line
split it to get dimensions
read next lines (regards dimensions)
read special char (@
)
repeat
Reading first array you have there:
static void readFile() throws IOException {
BufferedReader reader;
reader = new BufferedReader(new FileReader("file.txt"));
String firstDimension = reader.readLine();
String[] split = firstDimension.split(" ");
int firstX = Integer.parseInt(split[0]);
int firstY = Integer.parseInt(split[0]);
int[][] first = new int[firstX][firstY];
for (int i = 0; i < firstX; i++) {
String[] line = reader.readLine().split(" ");
for (int j = 0; j < firstY; j++) {
first[i][j] = Integer.parseInt(line[j]);
}
}
// Read "@"
reader.readLine();
System.out.println(Arrays.deepToString(first));
}
and base on input:
3 3
12 34 45
34 -12 56
76 12 -1
@
3 3
8 13 45
67 0 12
12 -12 3
output should be:
[[12, 34, 45], [34, -12, 56], [76, 12, -1]]