Всем привет! Задачу решил своим способом, разбираю менторское решение.
Не могу понять следующее:
почему часть кода, которая выделена красным, будет выполняться после того, как переменной width будет присвоено значение 21?
Yevhenii Polovko
28 уровень
Не могу понять менторское решение
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Game Us
30 июня 2022, 19:48
ответ:
package com.javarush.task.pro.task04.task0405;
/*
Незаполненный прямоугольник
*/
public class Solution {
public static void main(String[] args) {
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++;
}
}
}
0
Александр
24 июня 2022, 04:04
не будет, но width действительно примет значение 21
0
Yevhenii Polovko
24 июня 2022, 06:30
Как тогда напечатаются строки с пробелами, если к тому моменту, как height станет == 2, width уже будет 21?
Чувствую, что у меня в голове какой-то баг не могу устранить(
0
hidden #598481
24 июня 2022, 07:13
Посмотри, какая команда выполнится первой после того, как height станет равно двум.
0
Yevhenii Polovko
24 июня 2022, 12:44
Думаю понял: когда height станет 2, компилятор опять width будет считать с 1. Так?
0
hidden #598481
24 июня 2022, 12:59
Компилятор вообще не этим занимается, но мысль правильная.
Тело внешнего цикла с 11 по 23 строки включительно, первая команда это int width = 1;
Более того, int width - это локальная переменная внутри тела цикла, то есть она существует только внутри итерации этого цикла. Когда заканчивается итерация цикла, переменная width перестаёт существовать и на следующей итерации создаётся заново.
+2
Yevhenii Polovko
25 июня 2022, 06:01
Да, выражаюсь дилетантски, но понимание появляется - уже какой-никакой прогресс.
Спасибо за помощь!
0