Мой метод не может вернуть значение?
Я написал метод, но метод не может вернуться 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;
}