2015-02-06 2 views
-1

여기 여기 내 솔루션그래서 내가 궁금

public int count_chars_in_String(String s, String s1){ 
    int count = 0; 
    for(int j = 0; j<s1.length(); j++){ 
     for(int i = 0; i<s.length();i++){ 
      if(s.charAt(i) == s1.charAt(j)){ 
       count += 1; 

      } 

     } 
    } 

하고하는 것은 때마다 내가 JUnit 테스트를 실행 내 나머지 코드

@Test public void tests4(){ 
    code.Solution s = new code.Solution(); 
    String input = "hhhhhey "; 
    String input1 = "hhh"; 
    int expected = 3; 
    int actual = s.count_chars_in_String(input, input1); 
    assertTrue("Expected was" +expected+"but the actual was" +actual , expected == actual); 

} 

입니다 예상치는 3 이었지만 실제 수치는 15였습니다. 어떻게 나는 혼란 스럽다. 당신이 3 아마 같을 것이다 결과를 줄 것이다

+1

두 문자열에서 동일한 위치 또는 다른 문자열에서 일치하는 항목을 찾으려고합니까? – rgettman

+0

두 문자열에서 동일한 대응 문자를 matche하려고합니다. 해당 위치가 – QifengSun

답변

1

코드합니다 (break 문을 유의) :

// the outer loop 
    for(int j = 0; j<s1.length(); j++){ 
     // the inner loop 
     for(int i = 0; i<s.length();i++){ 
      if(s.charAt(i) == s1.charAt(j)){ 
       count += 1; 
       // Break the inner loop after finding 
       // the match. 
       break; 
      } 

     } 
    } 

break 않고, 각 h (외부 루프) hhh, 당신은 카운터를 증가 5 배 (내부 루프; hhhhhhey에서 5 번 발생하기 때문에).

+0

이되어야합니다. 그래서 바깥 쪽 루프 또는 내부 루프가 중단됩니다. – QifengSun

+0

내부 루프가 깨질 것이라고 생각합니까? – QifengSun

+0

내부 루프에서 break를 추가 한 후, count + = 1 이후에 그것은 외부 루프로 다시 점프 할 것이고, 내부 루프에서 mutilpy h로 5 회 점프하지 않고 다시 시작한다는 것은 사실입니까? – QifengSun

0

이 대답이 당신이 찾고있는 것이고 나의 가난한 영어를 변명하는 것인지 모른다.

3 회 실행 J의 조건이 충족되는 시간에 동일한 I 대한 는 5 번 실행 시간, 각

. 이제 5x3 = 15로 결과가 나타납니다.

당신이 기대하는 것은 (3), 그럼 그냥 다음을 수행 각각의 문자열과 일치하는 숫자 문자를받을 경우

:

for(int i = 0; i<s1.length();i++){ 
 
    if(s.charAt(i) == s1.charAt(i)){ 
 
     count += 1; 
 

 
    } 
 

 
}

감사합니다.

+0

나는 그것을 게시하려고한다. 내가 게시 한 코드와 같이 u가 마음에 들지 않는 한 그것은 작동하지 않는다. 나는 break 문을 추가 할 때 작동 할 것이다. 2 번째 대답처럼. 어쨌든 고마워. – QifengSun