2014-05-15 130 views
0

对于该程序,它要求用户输入其全名。然后通过在第一个姓氏和第二个姓氏之间放置的空间分隔出第一个姓氏和第一个姓氏。但是,indexOf()不能识别空间,只返回-1。这是为什么?谢谢。为什么indexOf()不能识别空格?

这里是及时关闭PracticeIt的:

编写一个叫做processName方法接受控制台作为参数扫描仪和提示用户输入他或她的全名,然后打印反向名称订单(即姓氏,名字)。你可能会认为只会给出第一个和最后一个名字。您应该使用扫描仪一次读取整行输入,然后根据需要将其分开。下面是与用户的样本对话:

请输入您的全名:萨米Jankis

你按相反的顺序名字是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); 
} 
} 
+7

使用'nextLine'不'未来' –

+5

并学习使用调试器,甚至是System.out.println:输出fullName将允许您自己理解问题。 –

回答

4

当你做String fullName = inputScanner.next()你只读烧至接下来的空格显然没有fullName中的空格,因为它只是第一个名字。

如果你想读整条生产线采用String fullName = inputScanner.nextLine();

+0

谢谢,这工作。也修复了一个越界问题。 –