Java程序输出奇怪的结果
我的java代码有输出问题。 我正在尝试实现这个乘法矩阵方法,它编译得很好。唯一的问题是我的输出。我似乎得到了以下信息:Java程序输出奇怪的结果,java,Java,我的java代码有输出问题。 我正在尝试实现这个乘法矩阵方法,它编译得很好。唯一的问题是我的输出。我似乎得到了以下信息: ---- Test Multiply Matrix ---- [[D@7f31245a Should return C={{ 3, 2},{ 1, 1}} 有人能帮我理解我哪里出了问题吗。谢谢 以下是我的源代码: public class Recommendation { public static double[][] multiplyMatrix(double[
---- Test Multiply Matrix ----
[[D@7f31245a
Should return C={{ 3, 2},{ 1, 1}}
有人能帮我理解我哪里出了问题吗。谢谢
以下是我的源代码:
public class Recommendation
{
public static double[][] multiplyMatrix(double[][] A, double[][] B)
{
int aRows = A.length;
int bRows = B.length;
int aColumns = A[0].length;
int bColumns = B[0].length;
if((aColumns != bRows))
{
return null;
}
else
{
double[][] C = new double[aRows][bColumns];
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
C[i][j] = 0;
}
}
for (int i = 0; i < aRows; i++)
{
for (int j = 0; j < bColumns; j++)
{
for (int k = 0; k < aColumns; k++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
}
static double [][] A = {{ 1, 0, 2},
{ 0, 1, 1}};
static double [][] B = {{1, 2},
{ 0, 1},
{ 1, 0}};
public static void main(String[] argss)
{
// TEST multiplyMatrix
System.out.println(" ---- Test Multiply Matrix ---- ");
System.out.println(multiplyMatrix(A,B)); // should return C={{ 3, 2},{ 1, 1}}
System.out.println("Should return C={{ 3, 2},{ 1, 1}}");
System.out.println(" ");
}
}
公共类推荐
{
公共静态双[][]乘法矩阵(双[][]A,双[][]B)
{
int aRows=A.长度;
int bRows=B.长度;
int aColumns=A[0]。长度;
int bColumns=B[0]。长度;
如果((aColumns!=眉毛))
{
返回null;
}
其他的
{
double[]C=新的double[aRows][b列];
对于(int i=0;i<2;i++)
{
对于(int j=0;j<2;j++)
{
C[i][j]=0;
}
}
for(int i=0;i
您可能希望使用java.util.Arrays中的Arrays.toString来打印数组
或者,如果希望输出更加自定义,可以对数组进行迭代。您可能希望使用java.util.Arrays中的Arrays.toString来打印数组
或者,如果希望输出更加自定义,可以对数组进行迭代。
公共静态双[][]乘法矩阵(双[][]a,双[][]B)
。
这里返回一个双数组。它不是基元类型。因此,将使用数组的默认toString()方法(打印
classname@hashCode
,因此是输出)。必须使用数组.toString()才能正确打印值。公共静态双精度[][]乘法矩阵(双精度[][]A,双精度[][]B)
。
这里返回一个双数组。它不是基元类型。因此,将使用数组的默认toString()方法(打印classname@hashCode
,因此是输出)。必须使用数组.toString()才能正确打印值。您可以使用:
multilyMatrix
返回一个数组,该数组是一个对象,在Java中,由于每个对象都有toString()
方法,默认值是显示类名表示,然后添加@
符号,然后添加hashcode
为了更好地理解这里发生的事情,请参阅的实现
请注意,如果您希望对输出进行更多控制,例如过滤某些数组或更改它们的显示方式,则可以使用嵌套循环。您可以使用:
multilyMatrix
返回一个数组,该数组是一个对象,在Java中,由于每个对象都有toString()
方法,默认值是显示类名表示,然后添加@
符号,然后添加hashcode
为了更好地理解这里发生的事情,请参阅的实现
请注意,如果希望对输出进行更多控制,例如过滤某些数组或更改它们的显示方式,则可以使用嵌套循环。
[[D@7f31245a
表示实际对象的hashcode之后的双
二维数组
您的multilyMatrix()
方法返回的正是这个值,但是调用的toString()
方法是在对象上的方法,该对象正好打印这个值。您需要使用数组
类上的方法来预打印数组
干杯,[[D@7f31245a
表示实际对象的hashcode之后的双
二维数组
您的multilyMatrix()
方法返回的正是这个值,但是调用的toString()
方法是在对象上的方法,该对象正好打印这个值。您需要使用数组
类上的方法来预打印数组
干杯,请注意array.toString本身并不能帮助您,因为您的数组是二维的
它仍然会打印一些表单:[[I@355d56d5, [I@2efd552, [I@4f9dfbff]
相反,您可以这样做:
double[][] C = multiplyMatrix(A,B);
for (double[] subArray : C) {
System.out.print (Arrays.toString (subArray));
System.out.print (" , ");
}
System.out.println();
或者,您可以使用Arrays.deepToString(C)
,它将为您处理层次结构。请注意,Arrays.toString本身对您没有帮助,因为您的数组是二维的
它仍然会打印一些表单:[[I@355d56d5, [I@2efd552, [I@4f9dfbff]
相反,您可以这样做:
double[][] C = multiplyMatrix(A,B);
for (double[] subArray : C) {
System.out.print (Arrays.toString (subArray));
System.out.print (" , ");
}
System.out.println();
或者,您可以使用Arrays.deepToString(C)
,它将为您处理层次结构
返回的“深层内容”的字符串表示形式
指定的数组。如果该数组包含其他数组作为元素,则
字符串表示法包含其内容等。此方法
用于将多维数组转换为字符串。
对于多维数组,应该使用java.util.array.deepToString(array)
。当前正在打印对象
引用的字符串
表示
您可以使用#replace
方法将[]
替换为{}
//...
public static void main(String[] argss){
// TEST multiplyMatrix
System.out.println(" ---- Test Multiply Matrix ---- ");
double array[][] = multiplyMatrix(A,B);
String finalString = Arrays.deepToString(array)
.replace("[", "{")
.replace("]", "}");
System.out.println(finalString);
}//...
返回的“深层内容”的字符串表示形式
指定的数组。如果该数组包含其他数组作为元素,则
字符串表示contai