AP新课来了

二维数组为什么是 CSA 失分王?行列追踪的系统练法

更新于 2026-08-15 · AP新课来了教研组

先说结论

  • ·FRQ 第 4 题年年固定考二维数组,评分数据上它也是四道大题里平均得分最低的——不是概念难,是操作容易乱。
  • ·三个失分源头:[row][col] 写成 [col][row]、行数用 arr.length 列数用 arr[0].length 记混、嵌套循环内外层变量用错。
  • ·解药是规范化:变量永远命名 row/col 而不是 i/j,追踪时永远先画出网格再动手——两个习惯能消灭大半错误。

先把心智模型立正

Java 的二维数组是「数组的数组」:arr[row][col] 先取第 row 行(一个一维数组),再取该行的第 col 个元素。行数是 arr.length,列数是 arr[0].length——把这两个 length 记反是选择题的常设陷阱。

建立心智模型的动作很土但有效:做任何二维数组题,先在草稿纸上画出网格并标注行列下标,再开始读代码。跳过这步的学生,错误率高出一倍不止。

考试的三种遍历形态

按出现频率排序:

  • 行优先全遍历:外层 row 内层 col,求和/计数/找最值的载体,必须写到闭眼不错;
  • 单行或单列处理:固定一个下标遍历另一个——列遍历(外层 col 内层 row)是易错点,因为和肌肉记忆的行优先相反;
  • 相邻元素访问:arr[row-1][col](上)、arr[row+1][col](下)等,边界检查是否越界是评分点,FRQ 里常以「检查周围格子」的场景出现。

三周专项练法

第 1 周 读:每天 3 道「给代码和网格,写输出」的追踪题,强制画网格;第 2 周 写:行遍历、列遍历、求和、找最值各写若干遍,用 row/col 命名;第 3 周 综合:做近年 FRQ 第 4 题真题,限时 22 分钟,对 rubric 自评。

增强 for 循环遍历二维数组(for (int[] rowArr : arr))也在考试范围内,第 2 周一并练进去。AP新课来了 的二维数组单元配有网格可视化练习,追踪过程可以逐步核对。

Free Assessment

孩子适不适合,15 分钟测一测

不考编程知识——测逻辑、数学、英语读题、流程推演、细节专注五项底层能力, 做完当场出分维度报告。

免费测评

相关课程

AP CSA · Java 编程

从第一行 Java 代码到 FRQ 编程大题的 36 周完整路径,覆盖全部 53 个 AP Topics,浏览器里直接写、跑、测。

常见问题

二维数组会和 ArrayList 结合考吗?

FRQ 里两者通常分属第 3、4 题,不混合。选择题偶见 ArrayList 嵌套,但只考概念理解,不要求复杂操作。

「不规则数组」(每行长度不同)考吗?

官方框架允许出现,考法限于理解 arr[i].length 逐行不同。用 arr[0].length 当所有行的列数在不规则数组上会错——这正是考点。

FRQ 第 4 题目标定多少分合理?

经过三周专项的学生定 7 分(满分 9)是务实目标:全遍历与常规统计拿满,最难的一问允许部分丢分。它是从 4 冲 5 的关键增量。