2013-02-01 36 views
-1

我在以下步驟中試過。但是我不知道下一步該怎麼做。只能用s.equals(""),s.charAt(0),s.substring(1)。其他的方法是不允許的。我該如何編寫一個函數字符串replace(char a,char b,string s)來替換字符串s中每個出現的字符a b

public string remove1 (char c, string s){ 
string to_ret = ""; 
while(true){ 
    if (s.equals("")) return to_ret; 
    char c2 = s.charAt(0); 
    if (c2 = c) return to_ret+s.substring(1) 
    to_ret = to _ret; 
    s = s.substring(1); 
} 

remove("e","hello") 

接下來我該做什麼?

+0

你可以使用內置的替換功能。或者你必須自己寫? –

+1

你試過了什麼?你的代碼附加到這個問題上,是完全不相關的,不工作。 – user902383

回答

1

如果我理解你的問題,你可以做到這一點像以下:

s = s.replace('a', 'b'); 
+1

除了問題只說明equals(),可以使用charAt()和substring()。這似乎很明顯,這是一個家庭作業問題。 –

+0

從標題看來,OP似乎不是**尋找內置的replace()。 –

+0

替換方法不允許 – user2030982

1
public String remove(char a, char b, String s) { 
    String retString = ""; 
    for (int i = 0; i < s.length(); i++) { 
     char stringChar = s.charAt(i); 
     if (stringChar == a) { 
      retString = retString + b; 
     } else { 
      retString = retString + stringChar; 
     } 
    } 
    return retString; 
} 
+0

我們的導師讓我做這個沒有s.length。只是我提到的那3種方法。 – user2030982

0

這是一門功課的問題嗎?

public String remove1 (char c,char b, String s){ 
String to_ret = ""; 
int len = s.length(); 
for(int i =0 ; i< len ; i++){ 
    if (s.equals("")) return to_ret; 
    char c2 = s.charAt(i); 
    if (c2 == c) 
     to_ret = to_ret + b; 
    else 
     to_ret = to_ret + c2; 

} 
return to_ret; 
} 
0

這似乎有人試圖教你Java中的函數式編程原則。我會質疑這種語言的選擇。即便如此,你應該考慮遞歸解決方案。字符串作爲字符列表。

1

讓我給你介紹一個遞歸:

public String replace(char a, char b, String s) { 
    if (s.equals("") return ""; 
    char ch = s.charAt(i); 
    if (stringChar == a) { 
     return b+ replace(a,b,s.substring(1)) 
    } else { 
     return ch+ replace(a,b,s.substring(1)) 
    } 
} 
相關問題