Java 矩阵的元素是内存地址,而不是元素的值
我有一个矩阵作业。当我运行程序时,在控制台中,它总是按内存地址返回,而不是按值返回。 我是欧洲人,我用的是德语。我想也许本地化是个问题,所以我改成了我们,但这并不能解决我的问题 在控制台中:Java 矩阵的元素是内存地址,而不是元素的值,java,math,matrix,Java,Math,Matrix,我有一个矩阵作业。当我运行程序时,在控制台中,它总是按内存地址返回,而不是按值返回。 我是欧洲人,我用的是德语。我想也许本地化是个问题,所以我改成了我们,但这并不能解决我的问题 在控制台中: [[D@459189e1, [D@55f33675] [[D@527c6768, [D@65690726] 这是我的代码: import java.util.Arrays; import java.util.Locale; import java.util.Scanner; public class
[[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.util.array;
导入java.util.Locale;
导入java.util.Scanner;
公共类逆矩阵{
公共静态双[][]逆2x2矩阵(双[][]A){
双det=A[0][0]*A[1][1]-A[0][1]*A[1][0];
双m00=-1*A[1][1]/det;
双m01=A[0][1]/det;
双m10=A[1][0]/det;
双m11=-1*A[0][0]/det;
双[]B={{m00,m01},{m10,m11};
返回B;
}
公共静态void main(字符串[]args){
setDefault(Locale.US);
System.out.println(“输入a、b、c、d:0”);
扫描仪sc=新的扫描仪(System.in);
字符串输入=sc.next();
sc.close();
double[]A=新的double[2][2];
对于(int i=0;i<2;i++){
对于(int j=0;j<2;j++){
A[i][j]=Double.parseDouble(输入);
}
}
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));
}
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的建议要好得多。
A
是数组的数组,因此当您键入数组时。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的建议要好得多。用于以递归方式漂亮地打印数组的内容。否则,数组的每个元素都使用其
toString
方法打印,该方法确实会打印其类型,后跟其哈希代码。用于递归地漂亮地打印数组的内容。否则,数组的每个元素都使用其toString
方法打印,该方法确实会打印其类型,后跟其哈希代码。谢谢,您的答案是解释我为什么有问题:)谢谢,您的答案是解释我为什么有问题:)