2013-09-16 26 views
1

如何在java中混合使用兩個字符串?交錯字符串

如果我有abcde123456789,獲得a1b2c3d4e56789的最簡單方法是什麼?

這裏是我的代碼:

public class Mix { 
    public static void main(String[] args) { 
     String s1="vera", s2="ronaldo"; /* input strings */ 

     StringBuilder sb = new StringBuilder(); 

     for (int i = 0; i < s1.length(); i++) { 
      sb.append(s1.charAt(i)); 
      sb.append(s2.charAt(i)); 
     } 

     String result = sb.toString(); 
     System.out.println(result); 
    } 
} 

輸出:

vreornaa 

我的預期輸出:

vreornaaldo 

回答

2

爲了補充@Rohit,您也應該檢查這兩個字符串的長度較長,並將其追加到的結果。

String s1 = "vera", s2 = "ronaldo"; 
StringBuilder sb = new StringBuilder(); 

int minLength = Math.min(s1.length(), s2.length()); 
for (int i = 0; i < minLength; i++){ 
    sb.append(s1.charAt(i)); 
    sb.append(s2.charAt(i)); 
} 

for (int i = minLength; i < s1.length(); i++){ 
    sb.append(s1.charAt(i)); 
} 

for (int i = minLength; i < s2.length(); i++){ 
    sb.append(s2.charAt(i)); 
} 

System.out.println(sb.toString()); 
+0

請注意,長度檢查需要在兩個循環之前完成,而不是在此特定循環之前完成。 –

+0

@Rohit,現在我意識到問題中的代碼不檢查's2'邊界,我添加了一個工作解決方案。 – omainegra

2

你幾乎沒有。您只需要添加另一個for循環來追加較大字符串的其餘部分。剛剛從迭代較小的字符串長度的第二環,以更大的字符串長度:

for (int i = s1.length(); i < s2.length(); ++i) { 
    sb.append(s2.charAt(i)); 
} 
+0

如果s1.length()> s2.length()? – omainegra

+0

@omainegra。我希望OP能夠找出哪個字符串更大,並據此採取行動。是's1.length()> s2.length()',那麼第一個循環本身將拋出OutOfBoundsException。 –