#java #matrix
#java #матрица
Вопрос:
Я пишу программу для матричных вычислений, и она должна включать метод toString для отображения матрицы. Это то, что у меня есть до сих пор, но я не уверен, правильно ли я это делаю.
Ответ №1:
С Java 8 вы можете сделать это очень элегантно:
public String toString() {
return Stream.of(info).map(Arrays::toString).collect(Collectors.joining("n"));
}
Простой toString
метод (без использования потоков) для a matrix
может быть чем-то вроде:
public String toString() {
StringBuilder str = new StringBuilder();
for (int i = 0; i < info.length; i ){
for (int j = 0; j < info[i].length; j )
str.append(info[i][j]).append(" ");
str.append("n");
}
return str.toString();
}
У вас есть несколько ошибок в вашем коде.
В вашем конструкторе вам не хватает двух параметров (т. Е. r и c). Однако они вам на самом деле не нужны; вы можете просто использовать matrix
переданный в качестве параметра для info
определения размера матрицы.
// Constructor
public Matrix(double[][] info) {
this.info = new double[info.length][info[0].length];
for (int i = 0; i < info.length; i ) {
for (int j = 0; j < info[0].length; j ) {
this.info[i][j] = info[i][j];
}
}
}
Конструктор предназначен для вызова из-за пределов вашего класса:
//calling the constructor ?
Matrix second = new Matrix(new double[][]{{2, 8},{-4, 6},{0, -2}});
например:
class Main {
public static void main(String args[]) {
Matrix second = new Matrix(new double[][]{{2, 8},{-4, 6},{0, -2}});
}
}
Наконец, вам не нужны переменные для хранения размеров матрицы
this.a = r;
this.b = c;
эта информация может быть получена в Java из самой матрицы.
Ответ №2:
Если вы поместите это в основной метод, он будет работать нормально:
public static void main(String[] arg){
//calling the constructor ?
Matrix second = new Matrix(new double[][]{{2, 8}, {-4, 6}, {0, -2}});
for(double[] i: second.info){
for(double j: i){
System.out.println(j);
}
}
}
Помните только, что во втором кострукторе вы должны написать это:
public Matrix(double[][] info) {
this.info = info;
}
поскольку параметром является информация, а не размер матрицы.
Комментарии:
1. Вы перепутались в
for (int j = 0; j < info[0].length; j )