代码是:我想要的只是1s ......简单到了吗?
int[][] myArr = new int[100][100];
System.out.println(myArr);
for (int i =0; i< myArr.length; i++) {
for (int j=0; j< myArr[i].length; j++) {
myArr[i][j] = 1;
}
}
在两个印刷语句下它只打印出[[I @ 22911fb5 (我不知道这意味着什么?)感谢您的帮助,我已经尝试将双括号放在其他地方,但一切都是无用的
答案 0 :(得分:5)
这是因为数组的默认toString
方法与默认的Object
方法类似,也就是说,它会给你一个令人困惑的哈希码。
System.out.println(Arrays.deepToString(arr))
应该给你一个用大括号格式化的好结果。
答案 1 :(得分:1)
这个老栗子......
试试这个:
System.out.println(Arrays.toString(myArr));
遗憾的是,数组不会覆盖toString()
方法。默认实现(在Object.java中)是打印[
,后跟一个表示数据类型的字符,然后是@
,然后是十六进制的哈希码。
答案 2 :(得分:0)
你不能只打印那样的数组。当你尝试打印它时,Java会在底层对象上调用toString(),它只返回数组的内存地址。 您需要在循环中打印元素,如下所示:
int[][] myArr = new int[100][100];
//Fill the array
for (int i =0; i< myArr.length; i++) {
for (int j=0; j< myArr[i].length; j++) {
myArr[i][j] = 1;
}
}
//Print the array
for (int i =0; i< myArr.length; i++) {
for (int j=0; j< myArr[i].length; j++) {
System.out.print(myArr[i][j]);
}
System.out.println("");
}
答案 3 :(得分:0)
您的代码可能正常。您的调试语句可能会使用一些工作。 System.out.println()
只调用toString()
的{{1}}方法,它会吐出类似myArr
(内存地址)的内容,这是继承自的[[I@22911fb5
的默认功能toString()
。如果您想查看值是什么,请在内循环中尝试Object
。