为什么我的 indexOf 值没有返回正确的结果?

Why my indexOf value is not returning the right result?

我正在为我要为 java 中的名字首字母编写的程序编写这个小部分,我需要确定每个 space 在其中的位置才能选择首字母。我正在测试它以确保 space 出现在行中的正确位置,但由于某种原因,位置总是出错!请帮助我。

import java.util.Scanner;
class Main {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("please enter full name:");
    String name = in.nextLine();
    int space = name.indexOf(" ");
    int space1 = name.indexOf(" ", space) + space+1;
    int space2 = name.indexOf(" ", space1) + space1+1;
    int space3 = name.indexOf(" ", space2) + space2+1;
    int space4 = name.indexOf(" ", space3) + space3+1;
    int space5 = name.indexOf(" ", space4) + space4+1;
    System.out.println(space + " " + space1 + " " + space2 + " " + space3 + " " + space4);      
  }
}

我使用这条线的想法是对 space 行中出现在最后一个之后的每个部分进行计数并加 1,因为 java 从 0 开始计数。

(" ", space1) + space1+1;

基本上,如果名字是“Jeff Luiz Jeff Luiz”,第一个 space 位于 4,下一个位于 9,所以它会 4,然后在这个 space 之后继续计数,从 0 开始,这将再次找到 4(因为 Luiz 有相同数量的字母),与最后的 space 数字相加以跟踪真实位置(那么它将是 8),最后与 1 相加,因为 java 有效,等等。当我 运行 这 4 个词时,我找到了结果 4 9 19 19 19。有谁知道我的代码有什么问题吗?

替换

int space1 = name.indexOf(" ", space) + space+1;

int space1 = name.indexOf(" ", space + 1);

因为String#indexOf(String str, int fromIndex) returns 第一次出现的指定子字符串在此字符串中的索引,从指定索引开始。

演示:

public class Main {
    public static void main(String[] args) {
        String name = "Arvind Kumar Avinash";
        int space = name.indexOf(" ");
        int space1 = name.indexOf(" ", space + 1);
        System.out.println(space + ", " + space1);
    }
}

输出:

6, 12