我正在尝试打印此矩阵阵列的转置版本,但它正在打印内存位置。关于如何打印实际数组的任何输入?
这是它的印刷品:[[I @ 4b71bbc9,[I @ 17dfafd1,[I @ 5e8fce95]
import java.util.*;
class MatrixTranspose
{
public static void main (String [] args)
{
int [] [] m = {
{3, 6, 9},
{4, 1, 5},
{5, 8, 7},
};
System.out.println (Arrays.toString (transpose(m)));
}
public static int [] [] transpose (int [] [] x)
{
int start = 1;
for (int r = 0; r < x.length; r++)
{
for (int c = start; c < x[0].length; c++)
{
int temp = x[r][c];
x [r][c] = x[c][r];
x[c][r] = temp;
}
start++;
}
return x;
}
}
答案 0 :(得分:5)
transpose(int[][] x)
返回一个二维数组。
改为使用Arrays.deepToString(Object[] a)
:
如果元素e是基本类型的数组,则将其转换为a 字符串,通过调用适当的重载
Arrays.toString(e)
。如果元素e是引用类型的数组, 通过递归调用此方法将其转换为字符串。
System.out.println(Arrays.deepToString(transpose(m)));
答案 1 :(得分:1)
改为使用Arrays#deepToString
。
在Java中,每个对象都有toString()
方法,默认显示类名表示,然后添加@然后添加哈希码。
为了更好地理解您获得的输出,请参阅Arrays#toString
:
3860 public static String toString(int[] a) { {
3861 if (a == null)
3862 return "null";
3863 int iMax = a.length - 1;
3864 if (iMax == -1)
3865 return "[]";
3866
3867 StringBuilder b = new StringBuilder();
3868 b.append('[');
3869 for (int i = 0; ; i++) {
3870 b.append(a[i]);
3871 if (i == iMax)
3872 return b.append(']').toString();
3873 b.append(", ");
3874 }
3875 }
toString
应用于数组,从而产生“奇怪”的输出。