2013-10-02 20 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。

以防萬一:請記住,在Java中的索引在0開始。

4

String#indexOf(String, int)方法在指定的int處或之後的索引處查找指定的String

所以

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

name = "abcdefghd"; 
      ^index 4 

開始向String在指數4尋找"d",即。在索引3處的"d"之後。索引8中有"d"

相關問題