Java二维数组中如何查找指定行最后一个2的索引
解决Java二维数组第0行最后一个数值2的索引查找问题
原代码存在的问题
- 变量用途混淆:
x初始被赋值为数组行数,之后又被赋值为数组元素值,完全没用来存储目标索引 - 判断逻辑错误:你要找的是数值2,但代码里判断的是
ans[0][y] != 0,不符合需求 - 未终止循环:找到目标元素后没有退出循环,会继续向前遍历,可能覆盖结果
- 语法不完整:if代码块和while循环都没有闭合,会导致编译错误
修正后的实现方法
方法1:修正while循环
// 假设ans是你的二维int数组 int targetRow = 0; int lastIndex = -1; // 默认没找到时返回-1 int y = ans[targetRow].length - 1; // 从第0行最后一列开始遍历 while (y >= 0) { if (ans[targetRow][y] == 2) { lastIndex = y; break; // 找到后立即退出循环,保留最后一个匹配的索引 } y--; } if (lastIndex != -1) { System.out.println("行" + targetRow + "列" + lastIndex); } else { System.out.println("第0行中未找到数值2"); }
方法2:使用for循环(更直观)
int targetRow = 0; int lastIndex = -1; int[] row = ans[targetRow]; // 从后往前遍历第0行 for (int i = row.length - 1; i >= 0; i--) { if (row[i] == 2) { lastIndex = i; break; } } // 输出结果 if (lastIndex != -1) { System.out.printf("行%d列%d%n", targetRow, lastIndex); } else { System.out.println("第0行不存在数值2"); }
说明
- 两种方法都是从第0行的最后一列开始反向遍历,找到第一个匹配的2就停止,这样得到的就是最后一个出现的2的索引
- 增加了未找到的情况处理,避免索引无效的问题
内容的提问来源于stack exchange,提问作者David T Laszlo
相关产品推荐
相关产品推荐

