2014-04-10 5 views
0

내 PhoneDirectory의 모든 항목을 확인하고 매개 변수에 지정된 이름과 일치하는 이름의 위치를 ​​반환하는 find 메서드를 만들려고합니다. 배열의 위치를 ​​반환

private String find(String name) { 
    for (DirectoryEntry x : theDirectory) { 
     if (x.getName().equals(name)) { 
      return x.getName(); 
     } 
    } 

    return null; 
} 

내가 반드시 이름을 반환하지 않는 다른 방법 내에서 내 찾기 함수를 호출 할 것입니다 그러나, 대신 이름에 부착 된 수는 (각하여 DirectoryEntry에 이름이 :이 현재 가지고있는 것입니다 및 telno). 일치하는 이름 대신 배열의 위치를 ​​반환하는 방법에 대한 도움을 주시면 감사하겠습니다.

+0

이것은 당신이 가진 것과별로 다르지 않습니다. 각 루프의 for를 "normal"for 루프로 바꾸고 발견했을 때 인덱스를 반환합니다. 그렇지 않으면 -1을 반환합니다. –

답변

3

당신은 위치보다

private int find(String name) { 
    int i = 0; 
    for (DirectoryEntry x : theDirectory) { 
     if (x.getName().equals(name)) { 
      return i; 
     } 
     i++; 
    } 

    return -1; // returning -1 if not found 
} 

을 계산하기 위해 couter 걸릴 수 있습니다 또는 배열의 위치를 ​​원하는 경우 대신 foreach는

+0

대단히 고마워요. 어떻게하면 다른 방법으로 배열 위치에 telno를 반환 할 수 있습니까? 메소드 본문은 현재 find (name); –

+0

find (name)가 지금 위치를 반환합니다. – stinepike

1
private String find(String name) { 
    int k=0; 
    for (DirectoryEntry x : theDirectory) { 
     if (x.getName().equals(name)) { 
      k++; 
      return x.getName(); 
     } 
    } 
//k will give you pos 
    return null; 
} 
+0

이 함수에서 k의 값을 정확히 얻으려면 어떻게해야합니까? – PakkuDon

+0

@PakkuDon 고유 한 구분 기호로 이름을 붙이고 구문 분석합니다. –

0

의 루프 정상적인 사용, 일반 루프를 사용 foreach 루프 대신.

for (int i=0;i<theDirectory.length;i++) { 
DirectoryEntry x = theDirectory[i]; 
    if (x.getName().equals(name)) { 
     return i; 
    } 
} 
0

당신이 length에 자신의 카운터를 사용할 수 -field 당신의 theDirectory의 유형에 따라 : 대신

private int find(String name) { 
    for (int i = 0; i < theDirectory.length(); i++) { 
     DirectoryEntry x = theDirectory[i]; //If it is an Array; for Lists use get etc... 
     if (x.getName().equals(name)) { 
      return i; 
     } 
    } 

    return -1; 
} 
0

왜 바퀴를 재발 방지하고 사용하지 구아바 :

private int find(String name) { 
    return Iterables.indexOf(theDirectory, new Predicate<DirectoryEntry>() { 
     public boolean apply(DirectoryEntry de) { 
      return de.getName().equals(name); 
     } 
    }); 
} 
관련 문제