Мой метод не может вернуть значение?

Я написал метод, но метод не может вернуться 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 ответ

Решение

Почему это не работает?


Как вы видете variable i живет только внутри цикла for, поэтому вы не можете получить к нему доступ извне (это выходит за рамки видимости).

Любые переменные, созданные внутри цикла, являются локальными для цикла. Это означает, что после выхода из цикла к переменной больше нельзя получить доступ! Это включает в себя любые переменные, созданные в сигнатуре цикла.

Узнайте больше: http://www.java-made-easy.com/variable-scope.html

Одно из многих возможных решений:


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;
}
Другие вопросы по тегам