我写了一个方法,但方法不能返回i
值。我该怎么办?
public static int contain(String s1,String s2){ //I want wrote a method similar contain
if(s1.length() == s2.length() || s1.length() > s2.length()){
for(int i = 0; i < s1.length(); i++){
char s = s1.charAt(i);
String s3 = "s3+s";
if(s3.equals(s2)){
}
}
}
if(s2.length() > s1.length()){
System.out.println("-1");
}
return i;
}
int contains(String s1, String s2)
收到两个字符串,和
检查s2
s1
是否在s2
区分大小写。如果s1
位于s2
,则返回索引
最后一次出现{{1}},否则返回-1。
答案 0 :(得分:1)
为什么它不起作用?
正如您所看到的,variable i
仅存在于for循环中,因此您无法从外部访问它(它超出范围)。
在循环内创建的任何变量都是循环的本地。这意味着一旦退出循环,就无法再访问该变量!这包括在循环签名中创建的任何变量。
了解详情:http://www.java-made-easy.com/variable-scope.html#ixzz4QqXWdYAa
许多可能的解决方案之一:
public static int contain(String s1, String s2){
//local variable
int variable = 0;
if(s1.length() >= s2.length()){
for(int i = 0; i < s1.length(); i++){
variable = i;
char s = s1.charAt(i);
String s3 = "s3+s";
if(s3.equals(s2)){
//some code here
}
}
}else
System.out.println("-1");
//Return the local variable
return variable;
}