Java新手求助:判断*前后字符相同的方法中if语句错误排查
问题分析与修正方案
嘿,作为Java新手碰到这种小问题太正常啦,咱们一步步拆解你代码里的问题:
1. 变量名拼写错误
你定义的字符串长度变量是len,但循环条件里写成了length-1——Java是大小写敏感的,而且根本不存在length这个变量,编译器会直接报错。得改成len-1才行。
2. 语法结构错误
你把else直接跟在for循环后面了,这在Java里是不合法的!else只能和if语句配对,不能和for循环绑定。正确的逻辑应该是:遍历完所有可能的位置后,如果都没找到符合条件的*,再返回false。
3. 修正后的完整代码
public boolean sameStarChar(String str) { int len = str.length(); // 字符串长度小于3的话,不可能有*的前后都有字符,直接返回false if (len < 3) { return false; } // 遍历从索引1到len-2的位置(确保x-1和x+1都不越界) for(int x = 1; x < len - 1; x++) { if (str.charAt(x) == '*' && str.charAt(x-1) == str.charAt(x+1)) { return true; } } // 循环结束都没找到符合条件的*,返回false return false; }
额外说明
- 循环边界设为
x < len -1,能保证x+1最大就是字符串的最后一个索引,不会触发StringIndexOutOfBoundsException。 - 提前判断字符串长度小于3的情况,既能让逻辑更清晰,也能避免无意义的循环执行。
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

