【问题标题】:2D Array, output is no where near correct二维数组,输出几乎不正确
【发布时间】:2013-01-10 18:19:45
【问题描述】:
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!

【问题讨论】:

    标签: java arrays 2d output


    【解决方案1】:

    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() 方法将它们转换为字符串,该方法描述的是它们的标识而不是它们的内容。

    【讨论】:

      【解决方案2】:

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

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

      显示数组中的数据。

      【讨论】:

        猜你喜欢
        • 2017-07-05
        • 2020-11-19
        • 1970-01-01
        • 1970-01-01
        • 2021-04-11
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多