我的方法不能返回值?

时间:2016-11-23 15:24:59

标签: java methods return public-method

我写了一个方法,但方法不能返回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。

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;
}