2014-06-23 105 views
-9

我想添加兩個字符串,其輸出應該是 如果字符串s1 =「abc」; 串S = 「xyzwert」同時添加兩個字符串

兩個字符串的輸出應該是 「axbyczwert」

感謝

+0

String.charAt索引和StringBuilder附加使用應該做的伎倆。 –

+0

如果只有2個字符串,可以用(+)運算符連接它們。 s1 + s2會產生你想要的 –

+0

@MirekSurma仔細觀察。每個字符串的內容是交錯的。直接連接不會做 – awksp

回答

-1

該代碼會做你想要什麼:

String s1 = "abc"; 
String s2 = "xyzwerwer"; 
StringBuilder sb = new StringBuilder(); 
if (s1.length() > s2.length()) { 
    for (int i = 0; i < s2.length(); i++) { 
     sb.append(s1.charAt(i)); 
     sb.append(s2.charAt(i)); 
    } 
    sb.append(s1.substring(s1.length() - (s1.length() - s2.length()))); 
} else { 
    for (int i = 0; i < s1.length(); i++) { 
     sb.append(s1.charAt(i)); 
     sb.append(s2.charAt(i)); 
    } 
    sb.append(s2.substring(s2.length() - (s2.length() - s1.length()))); 
} 
String s3 = sb.toString(); 
System.out.println(s3); 

編輯代碼與最新的問題一起工作。

+0

嗨,如果我有我的字符串像這樣 - String str1 =「abc」; String str2 =「xyzwerwer」;其中一個字符串中的字符數多於另一個字符串中的字符數,這裏我想要輸出爲axbyczwerwer – Anagha36

+0

我編輯了上述代碼以執行所需操作。 – Frement

1

假設兩個字符串的長度相同:

StringBuilder sb = new StringBuilder(); 
for(int i = 0; i < str1.length(); i++) { 
    sb.append(str1.charAt(i)).append(str2.charAt(i)); 
} 
String result = sb.toString(); 

如果一個字符串是更長的時間,你需要這樣的事:

StringBuilder sb = new StringBuilder(); 
int i = 0; 
for(int len = Math.min(str1.length(), str2.length()); i < len; i++) { 
    sb.append(str1.charAt(i)).append(str2.charAt(i)); 
} 
if(str1.length() != str2.length()) { 
    String longerStr = str1.length() > str2.length() ? str1 : str2; 
    sb.append(longerStr.substring(i)); 
} 
String result = sb.toString(); 
+0

嗨,如果我有我這樣的字符串 - String str1 =「abc」; String str2 =「xyzwerwer」;其中一個字符串中的字符數大於另一個字符串中的字符數,這裏我想要輸出爲axbyczwerwer – Anagha36

+0

在我的編輯中回答。 – shmosel

+0

String s1 =「abc」; String s2 =「xyzasdasd」; String s3 = s1 + s2; StringBuilder sb = new StringBuilder();對於(int i = 0; i Anagha36

1

這將幫助你。

//Check if s1 or s2 is longer, if s1 is longer, set maxLength as s1.length. vice versa 
int maxLength = (s1.length() > s2.length()) ? s1.length() : s2.length(); 
//Default result string 
String result = ""; 
//Loop through the max number of characters based on the result earlier 
//Slowly add each character of both s1 and s2 to the result string starting from index0 
//This will result in the alternate adding of characters from both strings 
for(int i=0; i<maxLength; i++) 
{ 
    //Check if s1 is shorter than the maxLength to prevent index out of range. 
    if(i < s1.length()) 
    { 
     result += Character.toString(s1.charAt(i)); 
    } 

    //Check if s2 is shorter than the maxLength to prevent index out of range. 
    if(i < s2.length()) 
    { 
     result += Character.toString(s2.charAt(i)); 
    } 
} 
System.out.println (result); 
+0

一些解釋會很好。 – awksp

+0

更新回答評論 – KennethLJJ

+0

對不起,如果有任何代碼語法問題,我通常使用C#做我的東西。 – KennethLJJ

相關問題