Элемент Matrix - это адрес памяти, а не значение элемента - PullRequest
0 голосов
/ 01 октября 2011

У меня есть домашнее задание матрицы.Когда я запускаю программу, в консоли она всегда возвращается по адресу памяти, а не по значениям.Я европеец, я использовал немецкий язык.Я думал, что, возможно, проблема в локализации, поэтому я перешел на США, но это не решает мою проблему.

В консоли:

[[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)));

}

Ответы [ 2 ]

3 голосов
/ 01 октября 2011

Используйте Arrays.deepToString, чтобы рекурсивно распечатать содержимое массива. Иначе, каждый элемент массива печатается с использованием его метода toString, который действительно печатает его тип, за которым следует его hashCode.

2 голосов
/ 01 октября 2011

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));
    }
}

UPDATE

Дж. Б. Низет совет гораздо лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...