Какую тему прочитать, чтобы понять, что эту задачку можно сделать другим способом?

Задачка из книжки

Попробовал написать код, которая выводит слово "Hello" как на картинке.

Посмотрев на "чудо-код", понимаю, что можно эту же задачу как то лаконично расписать.

Так вот, какую тему прочитать, чтобы понять, что на экран я это же слово, могу вывести другим способом?

public class Hello {
    public static void main(String[] args) {
        System.out.println("*" + "    *" + "  *****" + "  *" + "      *" + "        ***");
        System.out.println("*" + "    *" + "  *" + "      *" + "      *" + "      *" + "     *");
        System.out.println("******" + "  *****" + "  *" + "      *" + "      *" + "     *");
        System.out.println("*" + "    *" + "  *" + "      *" + "      *" + "      *" + "     *");
        System.out.println("*" + "    *" + "  *****" + "  *****" + "  *****" + "    ***");
    } 
}

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

Автор решения: Alexander Chernin

Это приходит с опытом, то есть ответом является - надо больше программировать и читать, читать и программировать.

Изучить работу с циклами, со строками, с массивами, с разными видами делений и так далее.

И тогда вы сможете решить эту задачу, например, так:

public class HelloWorld {
    public static void main(String[] args) {
        String basis = "* ";
        String s = "12114114144041231414121012114141414";
        
        for(int i = 0; i < s.length(); i++) {
            char ch = basis.charAt(i % 2);
            int count = Character.getNumericValue( s.charAt(i) );
            if( count == 0 ) {
                System.out.println();
            } else {
                for(int c = 0; c < count; c++) {
                    System.out.print(ch);
                }
            }
        }
    }
}

Для разных задач нужен разный опыт, иногда хватит и пары прочитанных глав в каком-нибудь простеньком учебнике.

→ Ссылка