【问题标题】:2D Array not being declared properly二维数组未正确声明
【发布时间】:2017-02-05 08:53:52
【问题描述】:

我正在尝试从 .ppm 文件中获取数据并在图像上放置过滤器。 出于某种原因,当我打印图像的高度和宽度时,它会正确返回值,但是当我将数据放入二维数组时,它会返回高度与宽度相同,即使不是。这是相关代码的sn-p。和我初始化 Color 2D 数组有关系吗?

    Color[][] totalData = null;
    int x = 0;
    int y = 0;

    while (fileScanner.hasNext()) {
        // Handles comments
        String line = fileScanner.nextLine();
        if ((line.startsWith("#"))) {
            continue;
        }

        width = fileScanner.nextInt();
        height = fileScanner.nextInt();
        System.out.println(width); //4
        System.out.println(height); //3

        //Skips the Max color value
        fileScanner.next();

        totalData = new Color[height][width];
        System.out.println(totalData[0].length); //4
        System.out.println(totalData[1].length); //4

【问题讨论】:

    标签: java arrays multidimensional-array


    【解决方案1】:

    您正在打印数组的第一行和第二行的长度,两者都是 4,因为这是您的二维数组的宽度。

    要查看高度和宽度(不相同),您应该打印:

    System.out.println(totalData.length); // the number of rows (3)
    System.out.println(totalData[0].length); // the length of each row (4)
    

    【讨论】:

    • 那么第一维数组不是用索引表示的吗?另外,如果这是真的,那么为什么 totalData[1] 会返回任何内容?
    • totalData[1] 是二维数组的第二行。我不确定您在评论的第一部分中问了什么。
    • 我明白你在说什么。那么我应该定义 totalData 二维数组吗?
    • @HarrisonBergman 您是否在问 totalData 是否应该是二维数组(目前是这样)?这取决于您打算放入哪些数据。
    • 程序中的其他地方我得到了 ArrayIndexOutOfBoundsExceptions,所以我认为是因为这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2013-03-24
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    相关资源
    最近更新 更多