我正在做一项令我困惑的作业。它要求我编写一个名为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.
}
}
}
答案 0 :(得分:1)
为什么不简单地使用String#split
?
我不会为你解决这个问题,但是你应该做什么:
答案 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]);
这就是全部