为什么indexOf()没有识别空格?

时间:2014-05-15 07:21:44

标签: java string char indexof

对于此程序,它要求用户输入其全名。然后通过在名字和名字之间放置的空格中分隔它们来排序名字和姓氏。但是,indexOf()不识别空格,只返回-1。这是为什么?感谢。

以下是PracticeIt的提示:

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

请输入您的全名: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);
}
}

2 个答案:

答案 0 :(得分:5)

next将返回下一个令牌时使用nextLine而不是接下来获取整行

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

答案 1 :(得分:4)

当你执行String fullName = inputScanner.next()时,你只能读到下一个空格,所以很明显fullName中没有空格,因为它只是第一个名字。

如果您想阅读整行,请使用String fullName = inputScanner.nextLine();