Java判断字符串每个x是否紧跟o的代码测试未通过问题排查
代码问题分析
- 提前返回导致检查不完整:代码只要遇到第一个x,不管后续有没有其他不符合规则的x,都会直接返回结果。比如输入
xoxx,第一个x后是o就直接返回true,但第三个x后面还是x,实际应该返回false。 - 无x场景返回值错误:需求要求所有x都紧跟o,当字符串中没有x时,规则自然成立应该返回true,但你的代码在循环结束后统一返回false,比如输入
abc会返回错误结果。 - 末尾x的判断逻辑存在漏洞:如果x出现在字符串最后一位,你设置的循环条件
i < str.length()-1会跳过最后一位的判断,比如输入ox的场景下,最后一位的x不会被检测,容易返回错误结果。 - 方法命名不规范:
main是Java程序入口的专用方法名,普通业务方法不建议用这个名称避免歧义。

修复后的代码
public class XO { public boolean checkXFollowedByO(String str) { for (int i = 0; i < str.length(); i++){ if (str.charAt(i) == 'x'){ // x在最后一位或者后一位不是o,直接不符合规则 if (i == str.length() - 1 || str.charAt(i+1) != 'o'){ return false; } // 跳过已经校验过的o,避免重复判断 i++; } } // 所有x都符合规则/不存在x,返回true return true; } }
内容的提问来源于stack exchange,提问作者JamesC
相关产品推荐
相关产品推荐

