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

能否将Finder类中find方法返回值作为isSubstringAt方法的index参数?

关于Finder类方法调用与变量赋值的问题解答

嘿,我来帮你逐一解决这两个问题:

1. 能否将find方法的返回值作为isSubstringAt的index参数传入?

完全可以!原因很简单:

  • find方法的返回值是int类型,而isSubstringAt的index参数正好也是int类型,类型完全匹配。
  • 当find找到子串时,返回的是子串在原字符串中的起始索引,这个值传入isSubstringAt后,方法会验证该索引位置是否确实存在目标子串,逻辑通顺。
  • 如果find返回-1(表示未找到子串),传入isSubstringAt后,方法里的index + substring.length() > originalString.length()判断会直接返回false,这也符合预期。

不过要先修正你代码里的几个语法错误:

  • 方法参数不能用带引号的变量名,比如String "orginalString"要改成String originalString
  • 拼写错误:orginal应该是original
  • 子串参数大小写尽量统一(比如subString和substring,保持一致更清晰)

2. 如何在isSubstringAt方法中将index的值赋值给变量i?

其实你不需要刻意这么做——因为isSubstringAt里的循环已经用j来遍历子串了,直接用index + j就可以定位原字符串的字符。但如果你确实需要在方法内使用变量i并让它等于index,直接声明赋值就行:

public boolean isSubstringAt(String originalString, String substring, int index) {
    if (index + substring.length() > originalString.length()) {
        return false;
    }
    // 直接将index赋值给i
    int i = index;
    for (int j = 0; j < substring.length(); j++) {
        // 这里可以用i+j替代index+j,效果完全一样
        if (originalString.charAt(i + j) != substring.charAt(j)) {
            return false;
        }
    }
    return true;
}

修正后的完整Finder类代码

class Finder { 
    public int find(String originalString, String subString) { 
        int m = subString.length(); 
        int n = originalString.length(); 
        for (int i = 0; i <= n - m; i++) { 
            int j; 
            for (j = 0; j < m; j++) { 
                if (originalString.charAt(i + j) != subString.charAt(j)) { 
                    break; 
                } 
            } 
            if (j == m) { 
                return i; 
            } 
        } 
        return -1; 
    } 
    public boolean isSubstringAt(String originalString, String substring, int index) { 
        if (index + substring.length() > originalString.length()) { 
            return false; 
        } 
        for (int j = 0; j < substring.length(); j++) { 
            if (originalString.charAt(index + j) != substring.charAt(j)) { 
                return false; 
            } 
        } 
        return true; 
    } 
}

使用示例

public class Main {
    public static void main(String[] args) {
        Finder finder = new Finder();
        String originalStr = "Hello Stack Overflow";
        String targetSubStr = "Stack";
        
        // 获取find方法的返回值
        int targetIndex = finder.find(originalStr, targetSubStr);
        // 将返回值传入isSubstringAt验证
        boolean isExist = finder.isSubstringAt(originalStr, targetSubStr, targetIndex);
        
        System.out.println("子串是否在指定索引位置存在:" + isExist); // 输出true
    }
}

内容的提问来源于stack exchange,提问作者Moh reza Kh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:18:18