Подскажите пожалуйста, почему данный код не работает.
При вводных 2 и 4, пишет только первую строку (8888), а потом прекращается.
Можно ли использовать цикл без первой переменной? Может вместо нее написать m=m?
Через пограничную переменную я решил задачу.
Но так как изначально начал так, не понимаю почему цикл внутри цикла работает а первый нет.
for(;m>0;m--){
for(;n>0;n--){
System.out.print("8");}
System.out.println("");}
Вадим Сотников
30 уровень
Почему такой код не работает?
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Yerzhan
6 сентября 2019, 19:19полезный
Поясню более подробно, внешний цикл у тебя работает нормально, но внутренний нет. Когда внутренний цикл выведет первую строку, то переменная n становится =0. Затем начинает работать внешний цикл, счетчик уменьшается на 1 внешнего цикла и дальше р=очередь внутреннего цикла. Но переменная у тебя n=0 и по условию внутреннего цикла распечатка 8 получится только если n>0.
потому лучше сделать так:
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
System.out.print(8);
}
System.out.println();
}
Здесь переменная не обнуляется и работает все прекрасно.
Такую формулировку for(;n>0;n--) обычно не применяют во вложенных циклах, по крайней мере в этой задаче. Ну если ты хочешь свой вариант сделать рабочим, то можно при помощи доп. переменной, примерно так:
int m = s.nextInt();
int n = s.nextInt();
int j = n;
for(;m>0;m--){
for(;n>0;n--){
System.out.print("8");
}
n = j;
System.out.println();
}
+1
Павел МинеевExpert
6 сентября 2019, 15:25
n доходит до 0 при первой итерации внешнего цикла, поэтому выводится только первая строка. Объявляйте счетчики цикла локально и всё будет хорошо.
0