Java中用二维数组模拟坐标系,行号对应y轴、列号对应x轴,通过gridy访问点;支持负坐标需加偏移量;数组元素可为自定义对象以增强语义。

Java中用多维数组模拟坐标系,本质是把数组下标当作坐标值来使用。最常用的是二维数组,对应平面直角坐标系(x, y),其中行号通常表示y轴,列号表示x轴——这点容易搞反,需提前约定清楚。
二维数组就是一张“格子纸”
声明一个 int[][] grid = new int[10][10];,就相当于创建了一个10×10的方格坐标系,坐标范围默认是 (0,0) 到 (9,9)。grid[y][x] 表示第y行、第x列的位置(注意:先y后x,符合矩阵惯例)。
- 想在坐标 (3, 5) 处标记一个点?写 grid[3][5] = 1;
- 判断 (2, 7) 是否有物体?检查 grid[2][7] != 0
- 遍历整个坐标系?用两层for循环,外层控y,内层控x
支持负坐标?加偏移量就行
原生数组下标不能为负,但可通过“坐标偏移”技巧支持负值。比如要表示 x ∈ [-5, 5]、y ∈ [-5, 5] 的区域,可声明 int[][] world = new int[11][11];,并约定:实际坐标 (x, y) 对应数组位置 world[y + 5][x + 5]。
- 点 (-2, 3) → 数组索引 [3+5][−2+5] = [8][3]
- 访问前务必检查 x + offsetX 和 y + offsetY 是否在数组边界内
- 偏移量大小 = 坐标最小值的绝对值(如最小x是-5,则offsetX=5)
不只是数字:存对象让坐标更有意义
数组元素类型可以是自定义类,比如 Cell[][] map = new Cell[8][8];,每个 Cell 对象可包含类型、状态、图标等信息。
立即学习“Java免费学习笔记(深入)”;
- 初始化时用循环赋值:map[i][j] = new Cell("empty");
- 移动角色?先清空原坐标 map[oldY][oldX] = null;,再填入新位置
- 避免空指针:读取前判空,或初始化时统一 new 出默认 Cell 实例
简单但实用:画个“十字”验证坐标逻辑
写个小方法,在二维数组中心画十字,能快速检验坐标映射是否正确:
int mid = grid.length / 2;
for (int i = 0; i < grid.length; i++) {
grid[mid][i] = 1; // 横线
grid[i][mid] = 1; // 竖线
}
打印数组内容(用嵌套循环逐行输出),观察1组成的图形是否对称居中——这是调试坐标系最直观的方式。


















