2016-10-19 2 views
0

int 값을 반환하고 문자열 배열의 문자열 (char가 아님)을 인식하는 간단한 indexOf() 메서드를 만들려고합니다.내 자신의 간단한 indexOf() 메서드를 만드는 방법

public int indexOf(String str) { 

    /*Getting and return the index of the first 
    *occurrence of the specified String. Return 
    *-1 if string not in the list 
    */ 

    for(int i = 0; i < listArray.length; i++) { 
     if(listArray[i].equals(str)) { 
      return str.indexOf(listArray[i]); 
     } 
    } 
    return -1; 
} 
내가 처음 반환 자바에서 indexOf() 방법을 사용하고 있지만, 항상 왜, 그리고이 방법을 쓸 수있는 더 나은 방법이 0을 반환

?

+2

자신의'indexOf' 함수를 구현하려고한다면 (연습을 위해), 연습의 목적을 무방화시키는 내장 함수를 사용하지 않을까요? 어쩌면 함수가 실제로 무엇을하는지 (또는 JDK의 구현을 들여다 보면) 생각하고 거기에서 가져와야 할 것이다. – jpw

+2

코드의 다른 문제를 해결하지 않고 열심히 작업하고 반복적으로 작업 한 후에 반환하는 것이 더 좋습니다. :) – MordechayS

+1

도대체 왜'listArray'입니까? – Li357

답변

0

if 조건을 만족하면 i (index)를 반환해야합니다. 정의에 의해 listArray[i]

public int indexOf(String str) { 

    for(int i = 0; i < listArray.length; i++) { 
     if(listArray[i].equals(str)) { 
      return i; 
     } 
    } 
    return -1; 
} 
1

return i;str는 동일하다.

0

나는 혼란 스럽다고 생각합니다. ArrayList에서 문자열을 찾고 싶다면 이미 문자열을 찾은 적이 있다면 if(listArray[i].equals(str)) 당신은 이미 찾은 색인을 돌려 주면됩니다.

for(int i=0;i<listArray.length;i++){ 
     if(listArray[i].equals(str)){ 
      return i; 
     } 
    } 

입니다.

항상 기억 : 당신은 심지어에서 찾기 위해 listArray 및 샘플 문자열의 내용이나 샘플을 게시 할 경우 ... 그것은 당신이

1

을 붙어있는 곳을 정확하게 이해하는 것이 우리에게 더 도움이 될 것입니다 당신이 return str.indexoOf(listArray[i]);를 실행할 때마다 때문에 str은 이미 listArray[i]입니다. 물론 항상 0을 얻고 있습니다. str.indexOf(str);

그리고 정말로 그렇게 할 필요는 없습니다. 당신이 그것을 찾을 때

return i; 
1

귀하 괜찮에 대한 루프, 문제는, 인덱스 곳이 반환되는 것을 : 당신은 이미 단지 자신의 위치를 ​​반환, 지정된 캐릭터를 동일리스트의 요소를 발견했다 문자열 자체는 0이고 항상 0입니다.

예를 들어 "hello"는 문자열 "hello"의 위치 0에 있습니다.

당신은 다음과 같이 i을 반환해야합니다 :

public int indexOf(String str) { 

    /* Getting and return the index of the first 
    * occurrence of the specified String. Return 
    * -1 if string not in the list 
    */ 

    for (int i = 0; i < listArray.length; i++) { 
     if (listArray[i].equals(str)) { 
      // If we get here, it means that the item for position `i` is equal to `str`. 
      return i; // just return `i` 
     } 
    } 

    return -1; 
} 
0

당신은 루프를 사용하여이 작업을 수행 할 수 있습니다.

  1. 문자열이 equals를 사용하여 일치하는지 확인하십시오.
  2. 예인 경우 색인을 반환하십시오.
  3. for 루프를 벗어나면 -1을 반환합니다.
+0

감사합니다! 죄송합니다. 코드와 버그가 대부분 혼동 스럽습니다 ... –