如何在java中组合或合并两个字符串?

时间:2017-03-21 08:58:37

标签: java string string-concatenation

以下是我的代码我希望输出为" afbgchde" " abcdefgh&#34 ; 但最终没有索引错误,希望有更好的方法来获得这个......请帮助.. !!

String str1 = "abcde";
//char[] a = str1.toCharArray();
//System.out.println(a);
String str2 = "fgh";
char[] b = str2.toCharArray();
//System.out.println(b);
int i,j=0;
try
    {
        for(i=0;i<str1.length();i++)
        {
          char c = str1.charAt(i);
          System.out.print(c);
          if(j==i)
          { 
            char d = str2.charAt(j);
            System.out.print(d);
            j++;
          }
        }
    }
catch(Exception e)
{
    System.out.println(e);
}

4 个答案:

答案 0 :(得分:4)

简单:

 char d = str2.charAt(j);
 System.out.print(d);
 j++;

您正在访问第二个字符串中的字符;但是你从来不打算检查j是否仍然是< str2.length()

含义:i的for循环包含该检查;并且防止超出str的长度...但是你忘了在你的另一个字符串上做到这一点!因此,只有当str和str2碰巧具有相同的大小时,你的合并才有效。

所以解决方案更像是:

 StringBuilder builder = new StringBuilder();
 int j = 0;
 for (int i=0; i < str.length(); i++) {
   builder.append(str.charAt(i));
   if (j < str2.length()) {
     builder.append(str2.charAt(j));  
     j++;
   }
 }
 // if str2 has more chars than str
 if (j < str2.length()) {
   // append ALL chars starting from index j
   builder.append(str2.substring(j));
 }
 String merged = builder.toString();

答案 1 :(得分:3)

合并器的完整代码。

public class StringCombiner {
public static void main(String[] args){
    System.out.println(combine("Hello", "World"));
    System.out.println(combine("He", "World"));
    System.out.println(combine("Hello", "Wo"));
}

    public static String combine(String str1, String str2){
        StringBuilder output = new StringBuilder();
        int i =0;
        for(; i< str1.length(); ++i){
            output.append(str1.charAt(i));
            if(i < str2.length()){
                output.append(str2.charAt(i));
            }
        }
        if(i < str2.length()){
            for(; i<str2.length(); ++i){
                output.append(str2.charAt(i));
            }
        }
        return output.toString();
    }
    }

输出:

HWeolrllod
HWeorld
HWeollo

希望这有帮助。

答案 2 :(得分:0)

好。让我们试试这个

String str1 = "abcde";
String str2 = "fgh";
int bigLength = str1.length()>str2.length()?str1.length():str2.length();

for(int i = 0; i<bigLength; i++){
if(i<str1.length())
   System.out.print(str1.charAt(i))
if(i<str2.length())
   System.out.print(str2.charAt(i))
}

希望这对你有用。

答案 3 :(得分:0)

只使用StringBuilder类man

  

如果要更改String对象的值

String类是一个不可更改的对象,或者在初始化时无法更改

StringBuilder类是您希望在应用程序运行时进行更改的任何String的最佳解决方案

  

e.g。添加String或更改String的值,甚至缩短String

这是StringBuilder类的强大功能

`