2017-02-07 2 views
2

У меня проблема с этим кодом. В противном случае он делает именно то, что говорит название, но если заданные строки являются «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 и открытый класс, не превращая весь текст кода в беспорядок, извините за это ,

+0

Не нужно вставлять два оператора 'if'. Unnest их, и это должно решить вашу проблему. –

ответ

0

Похоже, что оператор 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)); 
      } 
     } 
    } 

} 
+0

Это сработало, спасибо, ребята! – Smirre

+0

не забывайте поднимать! благодаря! – zypa

1

Перенести второй 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)); 
    } 
} 
+0

Это сработало, спасибо, ребята! – Smirre

Смежные вопросы