2013-10-02 1 views
-2

name.indexOf("d",4)이 내 프로그램에서 8을 왜 인쇄하는지 이해할 수 없습니다. 나는 "d"에 대해 다른 글자를 대체하려고 시도하지만 항상 난수를 인쇄하는 것처럼 보이고 indexOf("character", integer)이 실제로 무엇을하는지 이해하는 패턴이 보이지 않으며 출력이 어떻게되는지도 알 수 있습니다.indexOf ("character", integer)의 결과를 알 수있는 방법은 무엇입니까?

import java.util.Scanner; 
public class Practice { 

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    String name; 
    name = "abcdefghd"; 

    System.out.println(name.indexOf("d"));//3 
    System.out.println(name.indexOf("cde"));//2 
    System.out.println(name.indexOf("fe"));//-1 
    System.out.println(name.indexOf("d", 4));//8 
} 
+7

javadoc을 읽었습니까? –

+0

힌트 : '8'은 인덱스 '4'다음에 'd'가 처음 나타나는 인덱스입니다. 그게 시작 됐어? – nhgrif

+2

이 질문은 표준 문서를 간단히 살펴봄으로써 답을 얻었 기 때문에 주제와는 거리가 먼 것처럼 보입니다. –

답변

3

반환 값은이 documentation 바로 여기에서 설명하는 것, 무작위되지 않습니다 :

지정된 인덱스에서 시작하여 지정된 하위 문자열의 첫 항목이 캐릭터 라인 내에서의 인덱스를 돌려줍니다.

반환되는 인덱스는 k >= fromIndex && this.startsWith(str, k) 인 최소값 k입니다. 그러한 k 값이 존재하지 않으면 -1이 리턴됩니다.

자바 인덱스는 0부터 시작합니다.

4

String#indexOf(String, int) 메서드는 지정된 String이 지정된 int 또는 그 이후의 인덱스에서 찾습니다.

그래서

System.out.println(name.indexOf("d", 4));//8 

name = "abcdefghd"; 
      ^index 4 

에 그것은 즉, String에 인덱스 4에서 "d"을 찾고 시작합니다. 인덱스 3에 "d" 이후. 인덱스 8에 "d"이 있습니다.