只是在二维数组中显示值,并注意到我的代码会输出一些hashcodes
然后输出值。但我不打印数组对象本身(如在帖子here中所做的那样)或者至少显式调用数组对象的toString
或hashcode
方法。相反,我使用arrayObj[i]
和arrayObj[i][j]
直接访问和打印数组中的值。
这是我的代码:
class PrintTwoDimArray {
public int [][] createArray () {
int counter = 0;
int[][] intArray = new int [2][4];
for (int i = 0; i < intArray.length; i++) {
for (int j = 0; j < intArray[i].length; j++) {
intArray[i][j] = ++counter;
}
}
return intArray;
}
public void printArray ( int [][] arrayObj ) {
for (int i = 0; i < arrayObj.length; i++) {
System.out.print(arrayObj[i] + " ");
for (int j = 0; j < arrayObj[i].length; j++) {
System.out.print(arrayObj[i][j] + " ");
}
System.out.println();
}
}
}
class TestPrintTwoDimArray {
public static void main (String[] args) {
PrintTwoDimArray twoDim = new PrintTwoDimArray();
int [][] multiArray = new int [2][4];
multiArray = twoDim.createArray();
twoDim.printArray(multiArray);
}
}
我的输出如下:
似乎我的代码以某种方式调用了数组的toString
或hashcode
方法。思考?如何修改以仅打印值?
javac和java版本1.8.0
答案 0 :(得分:1)
二维数组是一个数组数组。您创建的数组(int[2][4]
)看起来像这样
[ 0 ] -> [ 1, 2, 3, 4 ]
[ 1 ] -> [ 5, 6, 7, 8 ]
因此,当您只访问第一个维度时,您将获得包含第二个维度的数组。
int[][] arr = createArray();
System.out.println(arr[0]);
将输出类似
的内容[I@1db9742
要打印数组的值,您可以使用Arrays.toString(arr)
。在这种情况下,您可以省略内部循环,因为Arrays.toString()
将为您完成。
public void printArray ( int [][] arrayObj ) {
for (int i = 0; i < arrayObj.length; i++) {
System.out.println(Arrays.toString(arrayObj[i]));
}
}
答案 1 :(得分:0)
哈希值来自您的第一个System.print句子。
System.out.print(arrayObj [i] +“”);
使用这句话你打印一个Object(一个数组),因此Java正在调用默认的toString方法。
答案 2 :(得分:0)
打印时
arrayObj[i]
您从数组中获得默认的Object
toString()
。您可以使用Arrays.toString(int[])
将其设为String
System.out.println(Arrays.toString(arrayObj[i]));
或者,您可以使用Arrays.deepToString(Object[])
打印多维数组而无需循环
System.out.println(Arrays.deepToString(arrayObj));
修改强>
您可以使用格式化输出来构建表格。
public static void printArray(int[][] arrayObj) {
for (int i = 0; i < arrayObj.length; i++) {
System.out.printf("%03d: ", i + 1);
for (int val : arrayObj[i]) {
System.out.printf("% 4d ", val);
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] table = { { 3, 1, 2 }, { 5, 1, 4 }, { 100, 200, 300 } };
printArray(table);
}
输出
001: 3 1 2
002: 5 1 4
003: 100 200 300