Взгляните на MatrixIO
класс. Он имеет более 10 различных print(...)
методов для всех видов матриц. Хотя индексы не будут напечатаны, вы можете переопределить необходимые методы по вашему желанию.
С другой стороны, пользовательская реализация должна быть довольно простым алгоритмом. Некоторого общего метода, который принимает все виды матриц, должно быть достаточно.
Вот рабочий пример с комментариями:
Код
public class MatrixWithIndices {
public static void main(String[] args) {
SimpleMatrix simpleMatrix = SimpleMatrix.random_DDRM(5, 5, 1, 9, new Random());
printMatrixWithIndices(simpleMatrix.getDDRM(), 5, 5);
}
public static void printMatrixWithIndices(DMatrix matrix, int numChar, int precision) {
String format = "%" + numChar + "." + precision + "f "; // default format
StringBuilder columnIndexes = new StringBuilder();
columnIndexes.append(" "); //skips first 4 chars
// Append column indices
for (int i = 0; i < matrix.getNumCols(); i++) {
columnIndexes.append(i + 1);
// Print spaces till next column
for (int j = 0; j < String.format(format, matrix.get(0, i)).length() - 1; j++) {
columnIndexes.append(" ");
}
}
// Print column indices
System.out.println(columnIndexes.toString());
// Print horizontal dotted line
System.out.println(" " + columnIndexes.toString().replaceAll(".", "-").substring(3));
// Print rows
for (int y = 0; y < matrix.getNumRows(); ++y) {
// Prints row's index with 'border' (vertical line)
System.out.print((y + 1) + " | ");
// Print matrix values
for (int x = 0; x < matrix.getNumCols(); ++x) {
System.out.printf(format, matrix.get(y, x));
}
// Breaks line
System.out.println();
}
}
}
выход
1 2 3 4 5
-----------------------------------------
1 | 7.16880 6.12461 3.67458 8.26479 2.07274
2 | 1.73381 6.81084 7.52687 3.40099 4.50719
3 | 2.56602 8.93279 3.83817 7.26837 2.54689
4 | 6.17946 2.56854 6.42016 3.85734 5.58872
5 | 5.89330 4.50916 1.15128 8.49580 6.02326
Это далеко не идеально. Форматирование прервется для больших значений, но оно должно дать вам хорошее начало.
GitHub Gist: https://gist.github.com/MSBlastt/7c4f3e25b8bed74fac90b6e0ef2f8e7a