为什么我的 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
我正在为我要为 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