我不明白为什么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
}
答案 0 :(得分:4)
String#indexOf(String, int)
方法在指定的String
处或之后的索引处查找指定的int
。
所以
System.out.println(name.indexOf("d", 4));//8
in
name = "abcdefghd";
^ index 4
它开始在"d"
中的索引4处查找String
,即。在索引3的"d"
之后。索引8中有"d"
。
答案 1 :(得分:3)
返回的值不是随机的,它在documentation:
中有解释从指定索引处开始,返回指定子字符串第一次出现的字符串中的索引。
返回的索引是
k >= fromIndex && this.startsWith(str, k)
的最小值k。如果不存在这样的k值,则返回-1。
以防万一:请记住,Java索引从0
开始。