2016-09-26 161 views
0

的Java小白這裏的陣列...將字符串連接+分隔符

這是推動我堅果,因爲我知道這是這麼簡單的東西,但我一直在這30分鐘...

這來自codefights:

對於參數= [「Code」,「Fight」,「On」,「!」]和separator =「/」,輸出應該是 myConcat(arguments,separator)=「Code /繼續戰鬥/!/」。

我的代碼:

String myConcat(String[] arguments, String separator) { 
    for(int i = 0; i <= arguments.length; i++){ 
     String output = arguments[0] + separator; 
    } 
    return output; 
} 

錯誤:錯誤:在第5行file.java找不到符號 回報輸出; ^ 符號:可變輸出 位置:類_runfniek 1錯誤

任何提示,將不勝感激...

+0

添加適當的語言標記。在任何情況下,當前的編譯錯誤與連接操作符或數組無關,甚至無法加入。從實際問題開始,然後擴大,因爲它比射擊一切都好。提示:'output'的* scope *是什麼?爲什麼這個變量(「符號」)* not *可以在for循環之外訪問,就像寫入的那樣? – user2864740

回答

1

首先,StringBuilder優於+操作。

其次,在實際不保存值的循環體中定義字符串輸出是個錯誤。第三,需要考慮邊界,即不應該爲參數數組的最後一個元素添加分隔符。

四是i < arguments.length,不i <= arguments.length

String myConcat(String[] arguments, String separator) { 
    StringBuilder output = new StringBuilder(); 
    for(int i = 0; i < arguments.length; i++){ 
     output.append(arguments[i]); 
     if(i < arguments.length-1){ 
      output.append(separator); 
     } 
     return output.toString(); 
    } 
+0

謝謝你解釋我的錯誤。我閱讀並理解你的代碼。我確實發現了一件事。 您的代碼目前不會在最後添加分隔符。所以代替「Code/Fight/On /!/」,它會輸出「Code/Fight/On /!」我通過在arguments.length-1處去掉-1來解決這個問題 –

1
String output = arguments[0] + separator; 

參數[0] - >參數[I] 和字符串輸出var必須定義爲{}

錯誤提示非常明顯。

1

的問題是字符串output只在for語句,它需要建立在它之外,最好使用StringBuilder的存在:

String myConcat(String[] arguments, String separator){ 
     StringBuilder output = new StringBuilder(); 
     for(int i = 0; i < arguments.length; i++){ 
      output.append(arguments[i]); 
      output.append(separator); 
     } 
     return output.toString(); 
    } 

您似乎想要尾隨分隔符,如果不需要,可以使用if語句將其刪除。