2

我正在做一个令我困惑的任务。它要求我编写一个名为 processName() 的方法,该方法接受控制台的 Scanner 作为参数并提示用户输入全名,然后首先打印姓氏,然后最后打印名字。例如,如果我输入“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.  
        }
    }


}
4

5 回答 5

1

Why don't you simply use String#split?

I won't solve this for you, but here what you should do:

  1. split according to spaces.
  2. Check if the size of the array is 2.
  3. If so, print the second element then the first.

Tip: Viewing the API can save a lot of efforts and time.

于 2013-09-17T06:05:00.023 回答
1

为什么不直接说:

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

我把它留给你作为一个练习来支持包含两个以上单词的名字,例如“Juan Antonio Samaranch”应该格式化为“Samaranch, Juan Antonio”。

于 2013-09-17T06:06:26.483 回答
0

Using StringTokenizer will be more easier. Refer http://www.mkyong.com/java/java-stringtokenizer-example/ for example.

于 2013-09-17T06:05:17.053 回答
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]);

就这样

于 2013-09-18T17:08:24.150 回答
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
}

我认为你也应该考虑这样的投入 - Homer J Simpson

于 2013-09-17T06:11:56.053 回答