以下是我的代码我希望输出为" 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);
}
答案 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类的强大功能
`