名称在字符串

时间:2016-03-07 03:33:46

标签: java

编写一个方法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,请帮助我完全迷失。

7 个答案:

答案 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个提示:

  1. 第一个和最后一个名称之间的区别是 last ,而不是第一个空格(考虑使用str.lastIndexOf(" "))。

  2. 正如评论中所述,在比较字符串时,您无法使用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。