二维字符串数组循环搜索异常:输入匹配ID仍提示错误
二维数组ID搜索功能错误修复
你的代码核心问题出在for循环的逻辑判断上:当前代码只检查数组的第一行,一旦第一行的ID不匹配,就直接输出incorrect!并终止循环,完全没机会检查后续行的ID。哪怕目标ID在数组的第二行及以后,程序也会直接判定为不匹配。
修复方案
调整循环逻辑,先遍历所有行寻找匹配项,仅当全部遍历完成仍未找到时,才输出错误提示:
public void getWorkId(){ int i = 0; do{ // 输入ID System.out.println("id: "); workId = input.next(); // 标记是否找到匹配 boolean found = false; // 遍历所有行搜索匹配ID for(int row = 0; row < mangerTable.length; row++){ if(mangerTable[row][1].equals(workId)){ // 找到匹配,标记并终止遍历 found = true; break; } } // 根据搜索结果处理流程 if(found){ i = 1; } else { System.out.println("incorrect!"); i = -1; } } while(i > 0); }
关键调整说明
- 新增
found布尔变量专门标记匹配状态,替代原i变量的标记功能,逻辑更清晰 - 移除for循环内的else分支,避免第一次不匹配就终止循环,确保遍历完所有行
- 遍历结束后统一判断匹配结果,再输出对应提示,避免提前触发错误信息
内容的提问来源于stack exchange,提问作者rose
相关产品推荐
相关产品推荐

