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

Цель задачи: Создать цикл for, который будет выводить на экран слова из переменной source. Максимальное значение int i не должно превышать длину words

Создать второй цикл for в середине первого, который будет выводить на экран последовательно символы каждого слова из массива words (максимальное значение int i не должно превышать длину letters). Должно получиться:

Hello
H
e
l
l
o
world!
w
o
r
l
d
!
package ArrayTest;
    
public class ArrayTest {
    
    public static void main (String [] args){
    
        String source = "Hello World!";
    
        String[] words = source.split(" ");
        char arr[] = source.toCharArray();
        for (int i = 0; i < 2; i++) {
            System.out.println(words[i]);
            for (int j = 0; j < 10; j++) {
                System.out.println(arr[j]);
            }
        }
    }
}

Мой результат:

Hello
H
e
l
l
o

W
o
r
l
World!
H
e
l
l
o

W
o
r
l
    
Process finished with exit code 0

Ответы (1 шт):

Автор решения: Alex Rudenko

В существующем решении вложенный цикл выводит символы из строки source, а не для текущего слова из массива words, игнорируя при этом реальную длину строки и теряя два последних символа.

Исправленный вариант:

String source = "Hello World!";
    
String[] words = source.split(" ");

for (int i = 0; i < words.length; i++) {
    System.out.println(words[i]);

    char[] letters = words[i].toCharArray();
    for (int j = 0; j < letters.length; j++) {
        System.out.println(letters[j]);
    }
}

Также цикл for с индексами имеет смысл заменить на цикл for each:

String source = "Hello World!";
    
String[] words = source.split(" ");

for (String word : words) {
    System.out.println(word);
    for (char c : word.toCharArray()) {
        System.out.println(c);
    }
}
→ Ссылка