能否将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
相关产品推荐
相关产品推荐

