You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二维int数组查找0坐标时调用add方法报错问题求助

问题分析与解决方案

Hey there, let's break down what's going wrong here and fix it step by step!

核心问题:Java数组没有add()方法

你标记的错误很明确:Java中的基本类型数组(比如int[])是固定长度的,根本没有add()方法——这个方法是为ArrayList这类动态集合设计的,数组本身不支持动态添加元素。你初始化了一个长度为2的int[] coordinates,但直接调用coordinates.add(i,j)是完全不符合Java语法的。


解决方案1:只查找第一个0的坐标

如果你的需求是找到数组中第一个出现的0并返回它的坐标,只需要修改赋值方式,直接给数组的索引位置赋值即可:

public int[] locateZero(int[][] array) { 
    // 初始化坐标为{-1,-1},用来标记没找到0的情况
    int[] coordinates = {-1, -1}; 
    for (int i = 0; i < array.length; i++) { 
        // 注意:不要用array[0].length,万一二维数组是不规则的(行长度不同)会报错
        for (int j = 0; j < array[i].length; j++) { 
            if (array[i][j] == 0) { 
                // 直接给数组的两个索引位置赋值
                coordinates[0] = i;
                coordinates[1] = j;
                // 找到第一个0后直接返回,无需继续遍历
                return coordinates;
            }
        }
    }
    // 遍历完没找到0,返回标记值{-1,-1}
    return coordinates; 
}

解决方案2:查找所有0的坐标

如果你的需求是收集数组中所有0的坐标,那么应该使用ArrayList<int[]>这种动态集合来存储(因为数组长度固定,没法动态添加多个坐标):

import java.util.ArrayList;
import java.util.List;

public List<int[]> locateAllZeros(int[][] array) { 
    // 创建动态集合存储所有坐标
    List<int[]> allCoordinates = new ArrayList<>(); 
    for (int i = 0; i < array.length; i++) { 
        for (int j = 0; j < array[i].length; j++) { 
            if (array[i][j] == 0) { 
                // 每次找到0,就创建一个新的int数组存储坐标,添加到集合中
                allCoordinates.add(new int[]{i, j});
            }
        }
    }
    return allCoordinates; 
}

额外注意事项

  • 避免使用array[0].length遍历列:如果你的二维数组是不规则的(比如某一行的长度和第一行不同),会抛出ArrayIndexOutOfBoundsException,一定要用array[i].length来获取当前行的长度。
  • 处理未找到0的情况:如果是查找单个0,返回{-1,-1}这类标记值比返回默认的{0,0}更合理,因为(0,0)可能是一个有效的坐标,会造成混淆。

内容的提问来源于stack exchange,提问作者stitch123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:41:12