我的方法不能return一个值?

My method cannot return a value?

我写了一个方法,但是方法不能 return 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。如果 s2s1 中,它 return 的索引 最后一次出现 s2,否则为 returns -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;
}