-2

我不明白为什么name.indexOf("d",4)在我的程序中打印 8。我尝试用“d”替换其他字母,但它似乎总是打印一个随机数,而且我没有看到任何模式来理解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
}
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 之后。索引 8 中有一个"d"

于 2013-10-02T15:39:31.193 回答
3

返回的值不是随机的,文档中对此进行了解释:

返回此字符串中第一次出现指定子字符串的索引,从指定索引开始。

返回的索引是其中的最小值 k k >= fromIndex && this.startsWith(str, k)。如果不存在这样的 k 值,则返回 -1。

以防万一:记住在 Java 中索引从0.

于 2013-10-02T15:39:00.647 回答