从较短的字符串打印字符后,程序停止从两个字符串一次打印一个字符

Program stops printing one character at a time from two strings after the Characters are printed from the shorter string

我对这段代码有疑问。否则它完全按照标题所说的进行操作,但是如果给定的字符串是 "aa" 和 "bbbb",它只打印 "abab" 而不是打印 "ababbb"。从较短的字符串中打印出字符后,程序似乎停止了。这是代码:

public static void main(String[] args) {
    Scanner lukija = new Scanner(System.in);
    System.out.print("Anna merkkijono: ");
    String merkkijono1 = lukija.nextLine();
    System.out.println("Anna toinen merkkijono: ");
    String merkkijono2 = lukija.nextLine();
    for (int index = 0; index < merkkijono1.length() || index < merkkijono2.length(); index++) {
        if (merkkijono1.length() > index) {
            System.out.print(merkkijono1.charAt(index));
            if (merkkijono2.length() > index) {
                System.out.print(merkkijono2.charAt(index));
            }
        }
    }
}

}

所以即使从较短的字符串打印字符,我也应该以某种方式让它继续,有什么提示吗?

另外由于某种原因,其中一个括号不适合代码文本,我无法在不转动整个的情况下包含 java.util.Scanner 和 public class代码文本乱七八糟,抱歉。

将第二个if-statement移出第一个。

for (int index = 0; index < merkkijono1.length() || index < merkkijono2.length(); index++) {
    if (merkkijono1.length() > index) {
        System.out.print(merkkijono1.charAt(index));
    }
    if (merkkijono2.length() > index) {
        System.out.print(merkkijono2.charAt(index));
    }
}

if 语句似乎在错误的循环中。 在这里,我测试了它并且它有效。

import java.util.Scanner;

public class Program1 {

    public static void main(String[] args) {
        Scanner lukija = new Scanner(System.in);

        System.out.print("Anna merkkijono: ");

        String merkkijono1 = lukija.nextLine();

        System.out.print("Anna toinen merkkijono: ");

        String merkkijono2 = lukija.nextLine();

        for (int i = 0; i < merkkijono1.length() || i < merkkijono2.length(); i++) {

            if (merkkijono1.length() > i) {
                System.out.print(merkkijono1.charAt(i));

            }
            if (merkkijono2.length() > i) {
                System.out.print(merkkijono2.charAt(i));
            }
        }
    }

}