Java数组中搜索指定字符串无输出问题求助(附代码)
代码问题排查与修复
问题点分析
- 循环条件逻辑错误:原代码用
i < a[i].length()作为循环终止条件,这是拿数组第i个元素的字符串长度来判断,完全偏离了遍历数组的需求。正确的循环条件应该是i < a.length,这样才能遍历数组的所有元素,否则只会检查第一个元素就结束循环,极端情况还可能触发数组索引越界。 - else分支错误终止循环:只要第一个元素不匹配,就执行
break直接退出循环,导致后续元素根本没机会被检查。比如你要找的"d"在数组最后一位,代码连第二个元素都不会遍历就输出"Not found"。
修正后的代码
String a[] = { "a", "b", "c", "d" }; String str = "d"; boolean found = false; // 遍历数组全部元素 for (int i = 0; i < a.length; i++) { if (str.equals(a[i])) { System.out.println("Found number " + str); found = true; break; } } // 循环结束后统一判断是否找到,避免提前误判 if (!found) { System.out.println("Not found"); }
说明
- 改用
a.length作为循环条件,确保数组的每一个元素都能被检查到。 - 新增
found标记,循环结束后再处理未找到的情况,避免中途错误输出结果。 - 保留找到后的
break,找到目标后立即终止循环,优化遍历性能。
内容的提问来源于stack exchange,提问作者user23718586
相关产品推荐
相关产品推荐

