2D数组,输出不在接近正确的位置

import java.util.Scanner; public class Maze { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int rows = 0; int cols = 0; String arrayLine = ""; int counter = 0; rows = sc.nextInt(); cols = sc.nextInt(); arrayLine = sc.next(); char[][] array = new char[rows][cols]; for(int r=0; r<rows; r++){ for (int c=0; c<cols; c++){ array[r][c] = arrayLine.charAt(counter); counter ++; } } System.out.println(array); System.out.println(); } } 

我带来的信息是:

 8 7 000000011111S0000000110101111010101100010110111011010E00 

我运行它时得到的输出是[[C@252f0999

请帮助,我刚刚开始学习java!

array是一种特殊的对象,它没有一个隐式的toString()来管理数组内容的漂亮打印,所发生的是该对象由作为其哈希码的对象的标准表示来表示。

你应该使用Arrays.toString()

 for (int i = 0; i < array.length; ++i) System.out.println(Arrays.toString(array[i])); 

请注意,您无法直接编写Arrays.toString(array)因为如文档中所述:

如果数组包含其他数组作为元素,则它们将从Objectinheritance的Object.toString()方法转换为字符串,该方法描述其身份而不是其内容。

当您在对象上调用println()时,Java会默认返回资源的位置(这就是C @ 252 ….)。 你想打电话

 System.out.println(Arrays.deepToString(array) 

显示数组中的数据。