Вложенный для циклов, чтобы перебрать между двумя строками - PullRequest
0 голосов
/ 12 ноября 2018

Я бы хотел, используя циклы for, перебирать каждую строку и выводить каждый символ по очереди.

String a = "apple";
String b = "class";

for (int i = 0;  i < a.length() ; i++) { // - 1 because 0 = 1
    System.out.print(a.charAt(i));
    for (int j = 0; j < b.length(); j ++) {
        System.out.print(b.charAt(j));
    }
}

Я борюсь с внутренней петлей.

На данный момент мой вывод выглядит следующим образом:

AClasspClasspClasslClasseClass

Однако я бы хотел добиться следующего:

acplpalses

Расширенный вопрос:

Как насчет вывода одной строки в обратном порядке, в то время как другая выводится нормально?

Текущая попытка:

for (int i = a.length() - 1; i >= 0; i--) {
    System.out.println(a.charAt(i));
    for (int j = 0; j < b.length(); j ++) {
        System.out.println(b.charAt(j));
    }
}

Однако, это просто выводит, как указано выше, просто с «Apple» в обратном порядке в том же формате, что и предыдущий:

eclasslclasspclasspclassaclass

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

Другое решение с использованием потоков Java 8:

System.out.println(
    IntStream.range(0, Math.min(a.length(), b.length()))
        .mapToObj(i -> "" + a.charAt(i) + b.charAt(i))
        .collect(Collectors.joining(""))
);
0 голосов
/ 12 ноября 2018

Для расширенного вопроса- Предполагая, что обе строки имеют одинаковый размер

for (int i = 0; i < a.length(); i++) {
    System.out.print(a.charAt(a.length()-1-i));
    System.out.print(b.charAt(i));
}
0 голосов
/ 12 ноября 2018

Вам не нужно 2 цикла, поскольку вы берете один и тот же индекс для обоих Strings


Тот же заказ:

  1. Простой корпус такого же размера :

    for (int i = 0; i < a.length(); i++) {
        System.out.print(a.charAt(i));
        System.out.print(b.charAt(i));
    }
    
  2. Комплекс Корпус другого размера :

    int minLength = Math.min(a.length(), b.length());
    for (int i = 0; i < minLength; i++) {
        System.out.print(a.charAt(i));
        System.out.print(b.charAt(i));
    }
    System.out.print(a.substring(minLength)); // prints the remaining if 'a' is longer
    System.out.print(b.substring(minLength)); // prints the remaining if 'b' is longer
    

Другой заказ:

  1. Простой чехол такого же размера :

    for (int i = 0; i < a.length(); i++) {
        System.out.print(a.charAt(i));
        System.out.print(b.charAt(b.length() - i - 1));
    }
    
  2. Комплекс Корпус другого размера :

    int minLength = Math.min(a.length(), b.length());
    for (int i = 0; i < minLength; i++) {
        System.out.print(a.charAt(i));
        System.out.print(b.charAt(b.length() - i - 1));
    }
    System.out.print(a.substring(minLength));
    System.out.print(new StringBuilder(b).reverse().substring(minLength));
    
...