Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的indexOf值没有返回正确的结果?_Java_String_Methods_Indexof - Fatal编程技术网

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

Java 为什么我的indexOf值没有返回正确的结果?,java,string,methods,indexof,Java,String,Methods,Indexof,我正在为一个程序编写这一小部分,我将用java编写一个名字的首字母,我需要确定其中每个空格的位置,以便选择首字母。我正在测试它,以确保空格在直线中的正确位置被看到,但由于某些原因,位置总是出错!请帮帮我 import java.util.Scanner; class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println(&q

我正在为一个程序编写这一小部分,我将用java编写一个名字的首字母,我需要确定其中每个空格的位置,以便选择首字母。我正在测试它,以确保空格在直线中的正确位置被看到,但由于某些原因,位置总是出错!请帮帮我

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);      
  }
}
我的想法是使用这一行计算最后一行之后显示的行空间的每一部分,并添加1,因为java从0开始计算

(“”,空格1)+空格1+1

基本上,如果名字是“Jeff Luiz Jeff Luiz”,第一个空格在4,下一个空格在9,那么它将是4,然后在这个空格后继续计数,从0开始,这将再次找到4(因为Luiz有相同数量的字母),用最后一个空格数字求和以跟踪实际位置(那么它将是8),最后用1求和,因为java是如何工作的,依此类推。当我运行这4个单词时,我发现结果是4919。有人知道我的代码有什么问题吗?

替换

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

因为返回指定子字符串第一次出现的字符串内的索引,从指定索引开始

演示:

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
输出:

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

“Jeff Luiz Jeff Luiz”
的预期输出是什么?要获取第二个空格的索引,需要使用
int space1=name.indexOf(“,空格+1”)