add support for loading and printing out matrices from files

This commit is contained in:
dymik739 2023-03-18 00:48:35 +02:00
parent ca37003f32
commit 00fba12eb2
1 changed files with 46 additions and 0 deletions

View File

@ -59,8 +59,13 @@ public class Main {
if (allow_networking) {
System.err.println("[WARN] File is missing, downloading random matrix from the server");
fetchResource("http://lab2.kpi.dev:16554/matrix.py", matrix_file_name);
} else {
System.err.println("[WARN] File is missing; networking is disabled, not recovering");
System.exit(1);
}
}
int[][] matrix = loadMatrixFromFile(matrix_file);
}
@ -106,4 +111,45 @@ public class Main {
System.exit(1);
}
}
private static int[][] loadMatrixFromFile(File matrix_file) {
try {
Scanner matrix_file_reader = new Scanner(matrix_file);
ArrayList<String> raw_matrix_lines = new ArrayList<String>();
while (matrix_file_reader.hasNextLine()) {
raw_matrix_lines.add(matrix_file_reader.nextLine());
}
ArrayList<String[]> baked_matrix_lines = new ArrayList<String[]>();
for (String s : raw_matrix_lines) {
baked_matrix_lines.add(s.split(" "));
}
int ref_length = baked_matrix_lines.get(0).length;
int[][] baked_matrix = new int[baked_matrix_lines.size()][ref_length];
for (int i = 0; i < baked_matrix_lines.size(); i++) {
//for (String[] sa : baked_matrix_lines) {
if (baked_matrix_lines.get(i).length != ref_length) {
System.err.println("[ERROR] Matrix lines have different length! Assuming the matrix was corrupted");
System.exit(2);
}
for (int j = 0; j < baked_matrix_lines.get(i).length; j++) {
System.out.print(baked_matrix_lines.get(i)[j] + " ");
baked_matrix[i][j] = Integer.parseInt(baked_matrix_lines.get(i)[j]);
}
System.out.print("\n");
}
return baked_matrix;
} catch (Exception e) {
System.err.println("[ERROR] Failed to read matrix from file " + matrix_file.getName());
System.exit(1);
return new int[1][1];
}
}
}