Top.Mail.Ru
Ответы

Java. Не пойму как работает for в данном случае.

Как работает цикл for в данном случае? И почему System.out.println() выводит число 8 без указания? Берет пример с for который находится в блоке цикла for?

/* Рисуем прямоугольник
Ввести с клавиатуры два числа m и n.
Используя цикл for вывести на экран прямоугольник размером m на n из восьмёрок.
Пример: m=2, n=4
8888
8888
*/

public class Solution
{
public static void main(String[] args) throws Exception
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String s1 = reader.readLine();
int m = Integer.parseInt(s1);
String s2 = reader.readLine();
int n = Integer.parseInt(s2);
for(int a = 1;a<=m;a++)
{
for(int b = 1;b<=n;b++){
System.out.print(8);
}
System.out.println();
}//напишите тут ваш код

}
}

По дате
По рейтингу
Аватар пользователя
Знаток
9лет

Запусти в режиме отладки Debug и тебе станет понятно как оно работает.
Там все зависит от фигурных скобок, у тебя второй цикл for(int b = 1;b<=n;b++) находится внутри цикла for(int a = 1;a<=m;a++) . Поэтому у тебя сразу после итерации 1 цикла начинает работать 2 цикл, (к примеру int m =5; n =6;) он тебе напечатает в ряд шесть восьмерок, после чего сработает
System.out.println(); то есть перейдет на новую строку. и опять начнется 1й цикл, после итерации начинается 2й цикл и все по кругу

Вообще смотри в режиме Debug как все работает, очень понятно

Аватар пользователя
Искусственный Интеллект
9лет

8 выводится, потому что там написано System.out.print(8);
Цикл работает, начиная с b=1 и заканчивая b=n.
System.out.println(); это просто перенос.

Аватар пользователя
Знаток
9лет

Мы поможем вам выучить Java с нуля и стать профессиональными программистами! Это легко!!! Наша группа: http://vk.com/android_programers
Мы помогаем каждому

Аватар пользователя
9лет

import java.util.Scanner;

public class Myclass {
int[] mn = new int[2]; // Создаём одномерный целочисленный массив mn, в нём mn[0] = m, mn[1] = n.
/* Создаём метод-сеттер setnm() для безопасного ввода данных пользователем */
void setnm(){
{
int i = 0; // Хранит индекс массива mn
boolean repeat = true; // Выключает цикл do-while, когда все данные введены
do
{
String ch = ""; // Хранит символ m или n
switch (i){ // если значение переменной i равно
case 0: // 0, то
ch = "m"; // значение переменной ch станет равно "m"
break; // выход из switch после выполнения этого блока case
case 1: // Если значение переменной i равно 1, то
ch = "n"; // значение переменной ch станет равно "n"
break; // выход из switch после выполнения этого блока case
}
System.out.println("Введите " + ch + ":"); // Просит пользователя ввести значение m и n
Scanner scanner = new Scanner(System.in); // Создаём новый объект класса Scanner для чтения с клавиатуры
if (scanner.hasNextInt()){ // Если с клавиатуры введена цифра,
int tmp = scanner.nextInt(); // то записать цифру во временное хранилище - переменную tmp
if (tmp > 0) { // Если в переменной tmp значение больше 0,
mn[i] = tmp; // то записать значение из меременной tmp в первый элемент массива mn
i++; // Увеличить значение переменной i (индекс массива mn) на 1, чтобы обращаться к следующему
// элементу этого массива.
}
}
if (i == 2) repeat = false; // Если массив mn уже заполнен, то значение переменной i станет равно 2,
// поэтому нужно прекраить выполнение цикла путём изменения значения булевой
// переменной repeat на false.
}while (repeat);
}
}
/* Метод createRectangle() строит прямоугольник заданного размера */
void createRectangle(){
for (int m = 0; m < this.mn[0]; m++){ // Цикл будет выполняться, пока переменная цикла m будет меньше
// значения в первом элементе массива mn.
for (int n = 0; n < this.mn[1]; n++){ // Вложенный цикл for выводит в одну строко восьмёрки, пока
// переменная n этого цикла меньше значения второго элемента массива
// mn.
System.out.print("8");
}
System.out.println(); // Когда работа вложенного цикла завершается, вызывается этот метод, чтобы вставить
// перенос строки.
}
}
/* Конструктор класса Myclass() строит объекты этого класса */
Myclass(){
setnm(); // При создании объекта класса Myclass() сначала будет вызван метод setnm(), который вводит данные,
createRectangle(); // затем - метод, который строит прямоугольник.
}

public static void main(String[] args){
new Myclass(); // Создаём объект класса Myclass(), который строит прямоугольник.
// Когда все методы полученного объекта отработают, объект будет объявлен мусором. Ну и конец ему,
// ибо в Java есть сборщик мусора.
}
}

Аватар пользователя
Мастер
9лет

ты с двумерными массивами работал когда нибудь? тоже самое.