2016-03-07 32 views
0

編寫一個方法lastNameFirst接受一個包含諸如「Harry Smith」或「Mary Jane Lee」之類名稱的字符串,並返回帶有姓氏的第一個字符串,例如「Smith,Harry」或「李,瑪麗簡」。名字在字符串中翻轉

IM應該檢查它, 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每次請幫助IM完全喪失。

+0

您需要拆分最後一個空間,而不是第一個空間。 – shmosel

+2

'lastName ==「」'應該是'lastName.equals(「」)'' – MikeCAT

回答

1

這可能是簡單的創建一個使用String類的split功能的陣列,然後加入他們的行列:

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[] names = name.split(" "); 
String cName = names[1].equals(" ") ? names[0] : names[1] + ", " + names[0]; 
0

您的解決方案非常接近。這裏有2個提示,讓正確的解決方案:

  1. 什麼姓和名分開是最後,不是第一空間(考慮使用str.lastIndexOf(" "))。

  2. 正如在評論中提到,在比較字符串時,您不能使用str1 == str2,你必須使用str1.equals(str2)

1

請試試這個代碼

String first = name.substring(name.lastIndexOf(" ")); 
    String last = name.substring(0, name.lastIndexOf(" ")); 
    String result = first + "," + last; 
0

你只需要在你的name最後空間,您可以通過String.lastIndexOf(int)獲得。那麼你測試是否小於0,如果是的話return輸入name。否則,連接return您的name在所需的格式。使用可能看起來像這樣的三元(或條件運算符? :),

int p = name.lastIndexOf(' '); 
return (p < 0) ? name : name.substring(p + 1) + ", " + name.substring(0, p);