Использование For L oop для печати шаблона в Java - PullRequest
0 голосов
/ 06 марта 2020

Мне нужно напечатать это: enter image description here

Мне нужно напечатать этот квадрат, используя для l oop в java.

Это то, что я до сих пор:

 public static void main(String [] args)
   {

    for(int i = 0; i < 5; i++){
              System.out.print("O ");
        }
        System.out.println();
          for(int i = 0; i < 4; i++){
            System.out.print("O ");
        }

    }

Ответы [ 2 ]

3 голосов
/ 06 марта 2020

Самое простое решение - вставить две петли: сначала выведите O, а затем используйте l oop для печати .. Вы знаете, что каждая строка должна иметь уменьшающееся число O (и увеличивающееся число . с). Фактически, у вас есть 5 - i и i каждого на строку (где i - номер строки). И вы можете использовать внешний l oop, чтобы определить, сколько из каждого следует нарисовать с этими формулами. Например,

int size = 5;
for (int i = 0; i < size; i++) {
    for (int j = 0; j < size - i; j++) {
        System.out.print("O ");
    }
    for (int j = 0; j < i; j++) {
        System.out.print(". ");
    }
    System.out.println();
}

Какие выходы (в соответствии с запросом)

O O O O O 
O O O O . 
O O O . . 
O O . . . 
O . . . . 

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

int size = 5;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < size; i++) {
    sb.append("O ");
}
for (int i = 0; i < size; i++) {
    System.out.println(sb);
    sb.setCharAt(sb.length() - (i * 2) - 2, '.');
}

И вы также можете сделать это с массивом boolean (s) (например, битовой маской). Преобразуйте false в O и true в . и установите смещение последнего элемента по индексу на true на каждой итерации. Мол,

int size = 5;
boolean[] arr = new boolean[size];
for (int i = 0; i < size; i++) {
    for (int j = 0; j < size; j++) {
        System.out.print(arr[j] ? ". " : "O ");
    }
    System.out.println();
    arr[size - i - 1] = true;
}
2 голосов
/ 06 марта 2020

Это не проблема «шаблона проектирования». Вам просто нужно использовать логи c с петлями. Вот лог c.

В квадрате nxn ячеек строка i содержит (ni) овалов и точек i, где 0 <= i <n. </p>

Обратитесь к другому ответу, чтобы увидеть рабочий фрагмент.

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