二维数组在java中用于表示表格或矩阵,按行遍历可统计每行总和与非零元素个数,外层控行索引i,内层控列索引j,每行重置累加器,并用arr[i].length适配不规则数组。

二维数组在 Java 中常用于表示表格、矩阵或具有行列结构的数据。当需要按行、列或交叉维度进行统计(如每行求和、每列平均值、特定条件计数等),关键在于明确遍历方向与索引逻辑,避免越界和重复计算。
按行遍历:统计每行的总和与非零元素个数
适用于“以行为单位聚合”的场景,例如统计每个学生的各科总分、每笔订单的商品数量合计。
- 外层循环控制行索引 i(
0 ),内层循环控制列索引 <strong>j</strong>(<code>0 ) - 每进入新行时重置行内累加器(如
rowSum、nonZeroCount) - 注意:每行长度可能不同(不规则二维数组),必须用
arr[i].length而非固定值
for (int i = 0; i
int rowSum = 0;<br>
int nonZeroCount = 0;<br>
for (int j = 0; j
if (scores[i][j] != 0) {<br>
rowSum += scores[i][j];<br>
nonZeroCount++;<br>
}<br>
}<br>
System.out.printf("第%d行:总分=%d,有效科目=%d%n", i+1, rowSum, nonZeroCount);<br>
}
按列遍历:计算每列平均值与最大值
适用于“按属性汇总”的场景,例如各科成绩的班级平均分、所有订单中每类商品的最高单价。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 先确认列数(通常取首行长度,或遍历所有行取最大/最小列宽);若存在空行需跳过
- 外层循环为列索引 j,内层为行索引 i;访问
arr[i][j]前务必检查i - 列统计易出错点:未处理缺失值(null 或空单元格)、整数除法截断(建议用
double累加后除)
双维度联动统计:满足行列条件的频次计数
例如:“统计数学成绩 ≥90 且英语成绩 ≥85 的学生人数”,本质是同时约束多列(或多行)的联合条件。
- 使用单层 for 循环遍历行(
i),在每行内直接访问多个列索引(如arr[i][0]数学,arr[i][1]英语) - 避免嵌套两层循环去“匹配行列组合”,除非问题本身是笛卡尔积式关联(如矩阵乘法)
- 可配合 boolean 数组或 Map
记录复合维度标签(如 "A-B" 表示第 A 行第 B 列满足条件)
用增强 for 避免索引错误,但需注意局限性
增强 for(for-each)提升可读性,适合纯遍历无索引依赖的统计(如全数组求和、查找最大值)。
- 无法直接获取当前行列号,如需位置信息(如“第3行第2列”),仍需传统 for 或额外计数器
- 修改数组元素时安全;但若内部用
list.toArray()转换而来,原 list 可能不受影响 - 不规则数组中,增强 for 对每行自动适配长度,天然规避
ArrayIndexOutOfBoundsException
int total = 0;<br>
for (int[] row : matrix) {<br>
for (int val : row) {<br>
total += val;<br>
}<br>
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










