4
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!

4

2 回答 2

5

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

你应该使用Arrays.toString()

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

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

如果数组包含其他数组作为元素,它们会通过继承自 Object 的 Object.toString() 方法转换为字符串,该方法描述的是它们的标识而不是它们的内容。

于 2013-01-27T05:16:03.253 回答
4

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

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

显示数组中的数据。

于 2013-01-27T05:18:12.673 回答