2016-11-23 1 views
-3

메서드를 작성했지만 메서드가 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에있는 경우 의 인덱스를 마지막으로 나타내는 s2을 반환하고 그렇지 않으면 -1을 반환합니다.

+7

'i'는'return' 한 Statment의 범위에 있지 않습니다. –

+2

변수'i'는 for 루프의 범위에만 있습니다. –

+1

@AndyTurner 잘 잡습니다. – Maroun

답변

1

왜 작동하지 않습니까?


당신이 (이 범위를 벗어 )를 외부에서 액세스 할 수 있도록 단지 내부 루프 variable i의 삶을 볼 수 있듯이.

루프 내부에서 생성 된 모든 변수는 루프의 로컬 입니다. 즉, 일단 루프를 종료하면 변수에 더 이상 액세스 할 수 없습니다. 여기에는 루프 서명에서 생성 된 모든 변수가 포함됩니다.

더 읽기 : 여러 가지 솔루션의 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; 
} 
+0

'variable'이 값으로 초기화되지 않으면 컴파일되지 않습니다. – David

+0

@David Ops 편집, 여기에 직접 코드를 썼습니다 ... – GOXR3PLUS

+0

로컬 변수 변수가 초기화되지 않았을 수 있습니까? –

관련 문제