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

标签 java string char indexof

对于这个程序,它要求用户输入他们的全名。然后,它通过在名字和姓氏之间的空格处分隔名字和姓氏来对名字和姓氏进行排序。但是,indexOf() 无法识别该空间,仅返回 -1。这是为什么?谢谢。

以下是 PracticeIt 的提示:

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

请输入您的全名:Sammy Jankis

你的名字倒序是 Jankis,Sammy

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);
}
}

最佳答案

由于 next 将返回下一个标记,因此使用 nextLine 而不是 next 来获取整行

参见http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()

关于java - 为什么indexOf()不能识别空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23671705/

相关文章:

java - Neo4j 导入工具反斜杠转义

java - 通过互联网在两台计算机之间发送命令

java - 如何使用 Reactor 框架 2.x 执行多线程 map/reduce?

c - 如何将“放在C中的字符串内

c++ - 使用统一初始化时未调用 std::string(count, ch)

java - 抽象servlet - 如何防止实例化

string - Neo4j - 将节点属性集从字符串转换为整数

c++ - 如何创建一个随机打乱字符串的函数

C++ 程序读取 '*' 为 'a'

c - C程序中的"Array subscript is not an integer"