-2

name.indexOf("d",4)私のプログラムで 8 を出力する理由がわかりません。indexOf("character", integer)「d」を他の文字に置き換えてみましたが、常に乱数が出力されているようで、が実際に 何をしているのか、どのように出力されるのかを理解するパターンが見当たりません。

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
}
4

2 に答える 2

4

このString#indexOf(String, int)メソッドは、指定さStringれた の以降のインデックスで、指定された を探しますint

そう

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

name = "abcdefghd";
            ^ index 4

"d"のインデックス 4 の検索を開始しますString"d"インデックス 3 の後に、"d"インデックス 8 に a があります。

于 2013-10-02T15:39:31.193 に答える
3

戻り値はランダムではありません。ドキュメントで説明されています:

この文字列内で、指定されたインデックスから始まる、指定された部分文字列が最初に出現するインデックスを返します。

返されるインデックスは、 の最小値 k ですk >= fromIndex && this.startsWith(str, k)。そのような k の値が存在しない場合は、-1 が返されます。

念のため: Java のインデックスは から始まることに注意して0ください。

于 2013-10-02T15:39:00.647 に答える