【问题标题】:Element of Matrix is the Memory addres and not the value of element矩阵的元素是内存地址而不是元素的值
【发布时间】:2011-10-01 16:58:42
【问题描述】:

我有一个矩阵作业。当我运行程序时,在控制台中它总是按内存地址而不是值返回。 我是欧洲人,我使用的是德语语言环境。我一直认为可能是本地化问题,所以我换了美国,但它并没有解决我的问题。

在控制台中:

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

}

【问题讨论】:

    标签: java math matrix


    【解决方案1】:

    使用Arrays.deepToString 以递归方式漂亮地打印数组的内容。否则,数组的每个元素都使用它的toString 方法打印,该方法确实打印了它的类型,然后是它的 hashCode。

    【讨论】:

      【解决方案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 的建议要好得多。

      【讨论】:

      • 谢谢你,你的回答是解释为什么我有问题:)
      猜你喜欢
      • 2020-01-09
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      相关资源
      最近更新 更多