【问题标题】:Program stops printing one character at a time from two strings after the Characters are printed from the shorter string从较短的字符串打印字符后,程序停止从两个字符串一次打印一个字符
【发布时间】:2017-06-25 07:31:01
【问题描述】:

我对这段代码有疑问。否则它会完全按照标题所说的那样做,但是如果给定的字符串是“aa”和“bbbb”,它只会打印“abab”而不是应该打印“abbabbb”。从较短的字符串打印字符后,程序似乎停止了。代码如下:

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 和公共类,而不会将整个代码文本变成一团糟,对此感到抱歉。

【问题讨论】:

  • 不需要嵌套两个if 语句。取消嵌套它们,它应该可以解决您的问题。

标签: java string loops java.util.scanner charat


【解决方案1】:

将第二个 if 语句移出第一个。

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));
    }
}

【讨论】:

    【解决方案2】:

    似乎 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));
                }
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 2020-02-28
      • 1970-01-01
      • 2021-04-02
      相关资源
      最近更新 更多