Java 为什么indexOf()不能识别空格?

Java 为什么indexOf()不能识别空格?,java,string,char,indexof,Java,String,Char,Indexof,对于这个程序,它要求用户输入他们的全名。然后,它在名字和姓氏之间的空格处将名字和姓氏分开,从而对它们进行排序。但是,indexOf不识别空间,只返回-1。为什么呢?谢谢 以下是PracticeIt的提示: 编写一个名为processName的方法,该方法接受控制台的扫描程序作为参数,并提示用户输入其全名,然后按相反顺序打印名称,即姓氏、名。你可以假设只会给出名字和姓氏。您应该使用扫描仪一次读取整行输入,然后根据需要将其分开。以下是与用户的对话示例: 请输入您的全名:Sammy Jankis 你的

对于这个程序,它要求用户输入他们的全名。然后,它在名字和姓氏之间的空格处将名字和姓氏分开,从而对它们进行排序。但是,indexOf不识别空间,只返回-1。为什么呢?谢谢

以下是PracticeIt的提示:

编写一个名为processName的方法,该方法接受控制台的扫描程序作为参数,并提示用户输入其全名,然后按相反顺序打印名称,即姓氏、名。你可以假设只会给出名字和姓氏。您应该使用扫描仪一次读取整行输入,然后根据需要将其分开。以下是与用户的对话示例:

请输入您的全名:Sammy Jankis

你的名字按相反顺序是詹基斯,萨米

import java.util.*;

public class Exercise15 {

public static void main(String[] args) {
    Scanner inputScanner = new Scanner(System.in);
    processName(inputScanner);

}

public static void processName(Scanner inputScanner) {
    System.out.print("Please enter your full name: ");
    String fullName = inputScanner.next();

    int space = fullName.indexOf(" "); // always return -1 for spaces
    int length = fullName.length();

    String lastName = fullName.substring(space+1,length+1);
    String firstname = fullName.substring(0, space);

    System.out.print("Your name in reverse order is " + lastName + ", " + firstname);
}
}
当您执行String fullName=inputScanner.next时,您只读取到下一个空格,因此显然fullName中没有空格,因为它只是第一个名称

如果要读取整行,请使用字符串fullName=inputScanner.nextLine

因为next将返回下一个令牌,所以使用nextLine not next获取整行


请参见

使用下一行而不是下一行并学习使用调试器,甚至System.out.println:输出全名将允许您自己理解问题。