编写一个方法lastNameFirst,它接受一个包含名称的字符串,例如" Harry Smith"或者" Mary Jane Lee",并且首先返回姓氏的字符串,例如" Smith,Harry"或者" Lee,Mary Jane"。
我应该检查一下 http://wiley.code-check.org/codecheck/files?repo=bjlo2&problem=05_02我发布此
String firstName = name.substring(0, name.indexOf(" "));
String lastName = name.substring(name.indexOf(" "));
String cName = lastName + ", " + firstName;
if ( lastName == " " )
{
cName = firstName;
}
return cName;
我每次都得到0/4,请帮助我完全迷失。
答案 0 :(得分:1)
使用split
类的String
函数创建数组可能更简单,然后加入它们:
String cName = String.join(", ", Collections.reverse(Arrays.asList(name.split(" "))));
String.join
仅适用于Java 8我相信,如果您不使用8,则可以使用以下内容:
String[] names = name.split(" ");
String cName = names[1] + ", " + names[0];
您还应该使用equals
方法来比较String和其他对象:
String[] names = name.split(" ");
String cName = names[1].equals(" ") ? names[0] : names[1] + ", " + names[0];
答案 1 :(得分:1)
请尝试此代码
String first = name.substring(name.lastIndexOf(" "));
String last = name.substring(0, name.lastIndexOf(" "));
String result = first + "," + last;
答案 2 :(得分:0)
您的解决方案非常接近。以下是提供正确解决方案的2个提示:
第一个和最后一个名称之间的区别是 last ,而不是第一个空格(考虑使用str.lastIndexOf(" ")
)。
正如评论中所述,在比较字符串时,您无法使用str1 == str2
,您必须使用str1.equals(str2)
答案 3 :(得分:0)
您只需要name
中的最后一个空格,right
即可获得该空格。然后测试它是否小于0
,如果是return
输入 name
。否则,以所需格式连接和return
name
。使用可能类似的三元(或条件运算符? :
),
int p = name.lastIndexOf(' ');
return (p < 0) ? name : name.substring(p + 1) + ", " + name.substring(0, p);
答案 4 :(得分:0)
我把它放在那个问题上,它通过了他们所有的4次测试。
public static String lastNameFirst(String name) { String LastToFirst =“”;
if(!name.contains(" ")){
return name;
}
int index = name.indexOf(" ");
int secondIndex = name.indexOf(" ", index + 1);
// exclusive of last index
if(secondIndex != -1) {
LastToFirst += name.substring(secondIndex+1,name.length())+", ";
LastToFirst += name.substring(0,secondIndex);
}
else {
LastToFirst += name.substring(index +1,name.length()) + ", ";
LastToFirst += name.substring(0, index);
return LastToFirst;
}
更好的解决方案是使用一个数组,并将字符存储在那里,对于间距,应该为你想要分裂的地方添加一个索引变量 - 感兴趣的字符串。上面的解决方案做了更好地展示这个问题的一个很好的例子,他们考虑的情况是它不是一个空白区域,而是其他符号使得该方法更加健壮。希望这会有所帮助。
答案 5 :(得分:0)
我尝试了这段代码,并完成了所有四项争论。希望这会有所帮助!
{
String[] names = name.split(" ");
String cName = "";
if(names.length > 2){
cName = names[2].equals(" ") ? names[0] : names[2] + ", " + names[0] + " " + names[1];
}
else if(names.length == 1){
cName = names[0]
}
else{
cName = names[1].equals(" ") ? names[0] : names[1] + ", " + names[0];
}
return cName;
}
}
答案 6 :(得分:0)
pi
这是正确答案,将使您获得4/4。