如何将二维数组的for循环转换为foreach循环实现元素查找?
用ForEach循环实现二维数组的元素查找
嘿,我来帮你搞定这个ForEach循环的问题~首先得先揪出你写的doitTwo代码里的问题:
- 循环变量没有声明类型(比如
int[] c和int d),Java里这是必须的语法要求 - 最核心的错误:ForEach循环的变量是数组的元素本身,不是索引!外层循环的
c其实是二维数组a里的每一个一维子数组,内层循环的d是这个子数组里的单个整数,你用a[c][d]完全搞错了用法——c是数组对象,根本不能当索引用。
接下来是正确的实现方式:
public static boolean doitTwo(int[][] a, int b) { // 外层ForEach遍历二维数组中的每一个一维子数组 for (int[] row : a) { // 内层ForEach遍历当前子数组中的每一个整数元素 for (int num : row) { if (num == b) { return true; } } } // 遍历完所有元素都没找到目标值,返回false return false; }
代码解释:
- 外层循环
for (int[] row : a):这里的row代表二维数组a中的每一个一维子数组,比如如果a是{{1,2},{3,4}},第一次循环row就是{1,2},第二次是{3,4} - 内层循环
for (int num : row):num就是当前row数组里的每一个整数元素,直接拿它和目标值b比较即可 - 一旦找到匹配的元素,立刻返回
true;如果整个二维数组遍历完都没找到,最后返回false
这个实现和你原来的doit方法功能完全一致,但用ForEach循环避免了手动管理索引,代码更简洁易读。
内容的提问来源于stack exchange,提问作者RYU5
相关产品推荐
相关产品推荐

