采取字符串的部分

时间:2013-09-17 05:59:25

标签: java string java.util.scanner

我正在做一项令我困惑的作业。它要求我编写一个名为processName()的方法,该方法接受控制台的扫描器作为参数,并提示用户输入全名,然后先打印姓氏,然后打印最后一个名字。例如,如果我输入“Sammy Jankins”,它将返回“Jankins,Sammy”。

我的计划是通过for循环遍历字符串,找到一个空格,然后创建两个新字符串 - 每个字符串分别用于名字和姓氏。但是,我不确定这是否是正确的道路以及如何做到这一点。任何提示都将不胜感激,谢谢。

这是我到目前为止所做的:

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 name = inputScanner.next(); 
    System.out.println();

    int n = name.length();
    String tempFirst;

    for (int i = 0; i <= name.length()-1; i++) {
        // Something that checks the indiviual characters of each string to see of " "exists
        // Somethow split that String into two others.  
        }
    }


}

5 个答案:

答案 0 :(得分:1)

为什么不简单地使用String#split

我不会为你解决这个问题,但是你应该做什么:

  1. split根据空格。
  2. 检查阵列的大小是否为2。
  3. 如果是,请打印第二个元素,然后打印第一个元素。
  4. 提示:查看API可以节省大量精力和时间。

答案 1 :(得分:1)

为什么不这样说:

String[] parts = name.split("\\s+");
String formattedName = parts[1] + ", " + parts[0];

我将它作为练习来支持你,以支持包含超过2个单词的名字,例如“Juan Antonio Samaranch”应格式化为“Samaranch,Juan Antonio”。

答案 2 :(得分:0)

答案 3 :(得分:0)

您可以使用以下代码替换for循环:

int spaceIdx = name.indexOf(' '); // or .lastIndexOf(' ')
if (spaceIdx != -1) {
    int nameLength = name.length();
    System.out.println(name.substring(spaceIdx + 1) + ", " + name.substring(0, spaceIdx));
} else {
    // handle incorrect input
}

我认为你也应该考虑这样的输入 - 荷马J辛普森

答案 4 :(得分:0)

1.使用StringTokenizer拆分字符串。当您尝试拆分字符串时,这将非常有用。

String arr[]=new String[2]; int i=0; StringTokenizer str=new StringTokenizer(StringToBeSplited,"");
while(str.hasMoreTokens()){ 
    arr[i++]=new String(str.nextToken());
}
System.out.println(arr[1]+" "+arr[0]);

这就是全部