Эту задачу я решил самостоятельно исключительно через циклы. После этого только посмотрел решение от разработчиков. И его логика мне не совсем понятна. Кто-нибудь может объяснить логику решения от разработчиков? Каким образом строчки с крайними буквами, разделенные пробелами, печатаются с новой строки каждый раз? Там же в предыдущих командах нет println. Просто пока не получается охватить умом логику вложенного цикла с условным оператором.
Anonymous #2475541
4 уровень
Кто-нибудь может объяснить логику решения в подсказке?
Обсуждается
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
НикитаExpert
28 марта 2021, 11:25
Тебе здесь не школа, хочешь учи не хочешь не учи. поэтому смысла решить задачу просто подсказкой нет. ты смотришь код, разбираешься в нем
0
Anonymous #2475541
28 марта 2021, 11:43
Очевидно, я некорректно составил вопрос. Дело в том, что я не смотрю решение, пока не решу задачу сам. Иногда на это уходит целый день или два. Эту задачу я решил самостоятельно исключительно через циклы. После этого только посмотрел решение от разработчиков. И его логика мне не совсем понятна. Поэтому и спрашиваю более опытных товарищей, чтоб объяснили. В целях повышения образованности.
0
НикитаExpert
28 марта 2021, 12:04
ну вы тогда код приложите и что непонятно
0
Entis
28 марта 2021, 10:39
чтобы если ты не знаешь как сделать задание, то мог бы посмотреть на правильный код, понять в чем ты ошибался или чего ты не учел и на будущее запомнил как можно сделать
+1
Anonymous #2475541
28 марта 2021, 11:48
Я решил задачу сам, только после этого посмотрел правильный код. И он мне не понятен. Каким образом строчки с крайними буквами, разделенные пробелами, печатаются с новой строки каждый раз? Там же в предыдущих командах нет println. Просто пока не получается охватить умом логику вложенного цикла с условным оператором.
0
Сергей
2 апреля 2021, 14:28
int height = 1;
while (height <= 10) {
int width = 1;
while (width <= 20) {
if (height == 1 || height == 10) {
System.out.print('Б');
} else if (width == 1 || width == 20) {
System.out.print('Б');
} else {
System.out.print(' ');
}
width++;
}
System.out.println();
height++;
моё понимание логики.
есть 10 строк по 20 букв.
присвоить 1строку,
запустить цикл строк,
присвоить 1букву, запустить цикл букв с проверкой если-то,
если строки 1 или 10, печатать Б, если нет(строки 2-9), но буква 1(первая) или 20 всё равно печатать Б, иначе (строки 2-9, и буквы со 2-19(следует из остатка от предыдущих if) печатать пробел.
присваиваем букву, завершаем цикл букв.
присваиваем строку, завершаем цикл строк.
итого 1 цикл считает строки, 2 внутри строки читает положение курсора и печатает нужную букву.
Больше для себя писал(30 минут) чтобы самому понять(3 дня тут сижу с нуля)
0
Anonymous #2477735
5 апреля 2021, 16:42
Пожалуйста, покажи свой вариант решения этой задачи!
0
Anonymous #2475541
7 апреля 2021, 12:40
public class Solution {
public static void main(String[] args) {
//печатаем первую строку
int line1 = 0;
while (line1 <19) {
System.out.print("Б");
line1++;
}
System.out.println("Б");
// печатаем строки с пробелами со второй по девятую
int line9 = 0;
while (line9 < 8) {
System.out.print("Б");
int whitespase = 0;
while (whitespase < 18) {
System.out.print(" ");
whitespase++;
}
System.out.println("Б");
line9++;
}
// по аналогии с первой печатаем десятую строку
int line10 = 0;
while (line10 < 20){
System.out.print("Б");
line10++;
}
}
}
0