#java #math #matrix
#java #математика #матрица
Вопрос:
У меня есть домашнее задание по матрице. Когда я запускаю программу, в консоли она всегда возвращается по адресу памяти, а не по значениям. Я европеец, я использовал немецкий язык. Я подумал, что, возможно, проблема в локализации, поэтому я перешел на US, но это не решает мою проблему.
В консоли:
[[D@459189e1, [D@55f33675]
[[D@527c6768, [D@65690726]
Вот мой код:
import java.util.Arrays;
import java.util.Locale;
import java.util.Scanner;
public class Inverse2x2Matrix {
public static double[][] inverse2x2Matrix(double[][] A) {
double det = A[0][0] * A[1][1] - A[0][1] * A[1][0];
double m00 = -1 * A[1][1] / det;
double m01 = A[0][1] / det;
double m10 = A[1][0] / det;
double m11 = -1 * A[0][0] / det;
double[][] B = { { m00, m01 }, { m10, m11 } };
return B;
}
public static void main(String[] args) {
Locale.setDefault(Locale.US);
System.out.println("Enter a, b, c, d: 0");
Scanner sc = new Scanner(System.in);
String input=sc.next();
sc.close();
double[][] A = new double[2][2];
for (int i = 0; i < 2; i ) {
for (int j = 0; j < 2; j ) {
A[i][j] = Double.parseDouble(input);
}
}
System.out.println(Arrays.toString(A));
System.out.println(Arrays.toString(inverse2x2Matrix(A)));
}
double[][] C = {{1.0,2.0},{3.0,4.0}};
System.out.println(Arrays.toString(C));
System.out.println(Arrays.toString(inverse2x2Matrix(C)));
}
Ответ №1:
Используется Arrays.deepToString
для рекурсивной печати содержимого массива. В противном случае каждый элемент массива печатается с использованием его toString
метода, который действительно печатает его тип, за которым следует его хэш-код.
Ответ №2:
A
является массивом массива, поэтому при вводе Arrays.toString(A)
он принимает каждый внутренний массив A
и вызывает toString
его, который возвращает это представление, подобное адресу. Вам нужно выполнить итерацию A
вручную:
for (double[] ar : A) {
System.out.println(Arrays.toString(ar));
}
Или написать вспомогательный метод:
private static void printArray(double[][] ar) {
for (double[] inner : ar) {
System.out.println(Arrays.toString(inner));
}
}
Обновить
Совет JB Nizet намного лучше.
Комментарии:
1. Спасибо, ваш ответ объясняет, почему у меня возникла проблема 🙂