You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:12:32