java for循环第一个字符串的第一个字符,然后是第二个字符串的最后一个字符

java for循环第一个字符串的第一个字符,然后是第二个字符串的最后一个字符,java,Java,当我输入两个长度相等的字符串时,我的代码工作得很好,但当我输入不同长度的字符串时,它会显示StringIndexOutOfBoundsException 这是我的密码。。。我需要输出a5b4c3d21 这不是家庭作业,我只是通过for循环学习字符串操作。 提前谢谢你 String name1 = "abcd"; String name2 = "12345"; String temp = ""; for (int i = 1; i <= name1.length() || i <=

当我输入两个长度相等的字符串时,我的代码工作得很好,但当我输入不同长度的字符串时,它会显示StringIndexOutOfBoundsException

这是我的密码。。。我需要输出a5b4c3d21 这不是家庭作业,我只是通过for循环学习字符串操作。 提前谢谢你

String name1 = "abcd";
String name2 = "12345";
String temp = "";

for (int i = 1; i <= name1.length() || i <= name2.length(); i++) {

    temp = temp + name1.charAt(i-1) + name2.charAt(name2.length()-i);
}

System.out.println(temp);
String name=“abcd”;
字符串名称2=“12345”;
字符串temp=“”;

对于(int i=1;i,这里有一个逻辑错误:

i <= name1.length() || i <= name2.length()

i您需要执行边界检查:

for (int i = 1; i <= name1.length() || i <= name2.length(); i++) {
    if (i <= name1.length()) {
        temp += name1.charAt(i - 1);
    }
    if (i <= name2.length()) {
        temp += name2.charAt(name2.length() - i);
    }
}
for(int i=1;i我将使用它来获取较大的
字符串的长度。然后从0迭代到较大的
字符串的长度。如果每个位置小于
字符串名称1
的最后一个字符,请打印该字符。然后测试
名称2
。如

String name1 = "abcd";
String name2 = "12345";
for (int i = 0, len = Math.max(name1.length(), name2.length()); i < len; i++) {
    if (i < name1.length()) {
        System.out.print(name1.charAt(i));
    }
    if (i < name2.length()) {
        System.out.print(name2.charAt(name2.length() - i - 1));
    }
}
System.out.println();
我们可以使用
StringBuilder
reverse()
等简化第二个
if
中的数学运算

String name1 = "abcd";
String name2 = "12345";
StringBuilder sb = new StringBuilder(name2);
sb.reverse();
for (int i = 0, len = Math.max(name1.length(), sb.length()); i < len; i++) {
    if (i < name1.length()) {
        System.out.print(name1.charAt(i));
    }
    if (i < sb.length()) {
        System.out.print(sb.charAt(i));
    }
}
System.out.println();
String name=“abcd”;
字符串名称2=“12345”;
StringBuilder sb=新StringBuilder(名称2);
使某人倒转;
for(inti=0,len=Math.max(name1.length(),sb.length());i
输出是一样的。

试试这个

代码
当其中一个字符串的长度较大时,第一个循环后的2个循环将继续。当到达字符串的一个结尾时,第一个循环终止

,这不是逻辑错误。如果其中一个仍然有字母,OP希望循环继续运行(请参阅所需输出)。谢谢你的回答。我已经考虑了一周的解决方案,但没有想出正确的逻辑。谢谢你,但我避免使用StringBuilder和任何其他对象。因为我正在使用java和javascript来测试它。
String name1 = "abcd";
String name2 = "12345";
for (int i = 0, len = Math.max(name1.length(), name2.length()); i < len; i++) {
    if (i < name1.length()) {
        System.out.print(name1.charAt(i));
    }
    if (i < name2.length()) {
        System.out.print(name2.charAt(name2.length() - i - 1));
    }
}
System.out.println();
a5b4c3d21
String name1 = "abcd";
String name2 = "12345";
StringBuilder sb = new StringBuilder(name2);
sb.reverse();
for (int i = 0, len = Math.max(name1.length(), sb.length()); i < len; i++) {
    if (i < name1.length()) {
        System.out.print(name1.charAt(i));
    }
    if (i < sb.length()) {
        System.out.print(sb.charAt(i));
    }
}
System.out.println();
    String name1 = "abcd";
    String name2 = "12345";
    String temp = "";
    int i;
    for (i = 0; i < name1.length() && i < name2.length(); i++) {

        temp = temp + name1.charAt(i) + name2.charAt(name2.length()-i-1);
    }
    for (; i < name1.length(); i++) {

        temp = temp + name1.charAt(i);
    }
    for (; i < name2.length(); i++) {

        temp = temp + name2.charAt(name2.length()-i-1);
    }
    System.out.println(temp);
a5b4c3d21