[英]Java passing 2 dimension array to method
public static void main{
String [][] book = new String[100][6];
for(int i = 0; i < 1; i++) {
for(int j = 0; j < 5; j++) {
book[i][j] = i;
}
}
arrayMethod(book);
}
public static void arrayMethod(String[][] array){
System.out.println(Arrays.asList(array));
}
arrayMethod方法输出是 [[Ljava.lang.String; @ 639facbc,[Ljava.lang.String; @ 8059dbd,[Ljava.lang.String; @ 28b6e768,[Ljava.lang.String; @ 1271ba,....
问题是在arrayMethod中我无法访问2维数组数据,哪里可以出问题?
它正在做你想要的:你假装(第一级)数组是List
( Array
)然后打印那些的toString()
,看起来像[Ljava.lang.String@pointer
。 你可能想要这个:
System.out.println(Arrays.deepToString(array));
正如Alya'a Gamal所说,如果你想在一个String数组中放一个int你需要解析它: book[i][j] = Integer.toString(i);
。 然后,如果你想显示你的数组,你需要运行它,例如:
public static void arrayMethod(String[][] array){
for(int i = 0; i < array.length;i++) {
for(int j = 0; j < array[i].length;j++)
System.out.println(array[i][j]); // a stringBuilder would be better than to print inside the loop
}
}
您可以使用Arrays.toString
打印1-D字符串数组,但不能使用Arrays.toString
直接打印2-D数组。
有两种方法可以在控制台中打印2D字符串数组。
方式#1 ==>
System.out.println(Arrays.deepToString(array));
方式#2 ==>
for(String[] arr: array)
{
System.out.println(Arrays.toString(arr));
}
我在这里看到三个问题:
(1)。 主方法的签名看起来很奇怪。 这会引发编译问题。
public static void main(String args[])
{
// Your code here
}
(2)。 在以下代码中:
for(int i = 0; i < 1; i++) {
for(int j = 0; j < 5; j++) {
book[i][j] = i;
}
}
book[i][j] =i; // Here you are trying to insert an int in place where a String is required.
这将再次导致编译时问题。
您可以按如下方式更正:
book[i][j] = Integer.toString(i);
(3)。
在Arrays
类中使用以下静态方法在控制台上打印2D数组的元素。
System.out.println(Arrays.deepToString(array));
希望这可以帮助。
+1用于隔离问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.