使用charAt实现字符匹配的布尔判断代码调试问题
调试判断字符是否在目标单词中的Java方法
原代码的核心错误
- 语法错误:
for (int i=0; i<length: i++)里的冒号要改成分号,Java循环的标准语法是for(初始化语句; 循环条件; 增量语句)。 - 方法调用错误:
charAt[i]是错误写法,charAt()是String类的实例方法,必须通过字符串对象调用,正确形式是secretWord.charAt(i)。 - 空语句陷阱:
if (charAt[i] == letter);末尾的分号会让if变成空语句,后续的return true;会直接执行,完全跳过循环逻辑。 - 冗余代码:你创建的
char[] arr完全没用,不需要把字符串转成数组,直接用charAt()遍历即可。 - 逻辑错误:找到匹配字符后应立即返回true,但循环结束后如果没找到任何匹配,才返回false,原代码直接返回true,逻辑完全错误。
修改后代码的问题
除了保留上述的语法错误(循环冒号)和空语句(if末尾的分号),还新增了逻辑问题:
- 你把
return true和else return false放在了循环内部,而且if后面的分号导致return true会在第一次循环时直接执行,else部分永远不会触发。就算去掉分号,第一次字符不匹配时会直接return false,无法继续检查后续字符。
正确实现代码
public boolean isInSecretWord(char letter) { int length = secretWord.length(); for (int i = 0; i < length; i++) { if (secretWord.charAt(i) == letter) { return true; // 找到匹配字符,立即返回true } } return false; // 循环结束未找到匹配,返回false }
额外优化(可选)
Java的String类已经提供了现成方法可以直接实现该功能,无需手动写循环:
public boolean isInSecretWord(char letter) { return secretWord.indexOf(letter) != -1; }
indexOf(char)会返回字符在字符串中的索引,找不到则返回-1,判断结果不等于-1即可确认字符存在。
内容的提问来源于stack exchange,提问作者Spoku
相关产品推荐
相关产品推荐

