PRAIT
@PRAIT

Нужно нарисовать пустой квадрат с крестиком используя циклы, верно ли моё решение?

Привет всем заглянувшим! Есть задача: Нарисовать квадрат такого типа:

5d23ebbebbdd7686942662.png

Вот что у меня получилось в виде кода:

import java.util.Scanner;

public class Kvadrat {

  public static void main(String[] args) {
    try (Scanner sc = new Scanner(System.in)) {
    int count = 11;
      for (int i = 0; i < count; i++) {
        for (int j = 0; j < count; j++) {
          if (i == 0 || i == count - 1 || j == 0 || j == count - 1) {
            System.out.print("*");
          } else if (i == j || j == count - 1 - i){
            System.out.print("*");
          } else {
            System.out.print(" ");
          }
        }
        System.out.println(" ");
      }
    }
  }
}


Дело в том что для меня задача была не из лёгких, и реально пришлось подумать как же его сделать. Буду благодарен если кто то проверит правильность решения! Спасибо!!
  • Вопрос задан
  • 1770 просмотров
Решения вопроса 1
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Если запустить - данная программа рисует, что надо, при любом значении count (т.е. очевидно она работает).

По коду пара слов:
1. Не используйте транслит в названиях классов/переменных и т.п. Принято все английским обзывать.
2. Я думаю вам любая IDE это за меня скажет - вы Scanner sc объявили, но нигде не используете. Я понимаю, что вы скорее всего добавите потом произвольный размер квадрата, но из кода для вопроса можно было бы это и убрать, чтоб глаза не мозолило (и вообще вам же легче будет отлаживать конкретный функционал, когда у вас нет лишнего функционала).
3. Как вам уже сказал Дмитрий Шицков , ифы можно заменить на один вот такой:
if (i == 0 || i == count - 1 || j == 0 || j == count - 1 || i == j || j == count - 1 - i) {
	System.out.print("*");
} else {
	System.out.print(" ");
}


Хотя лично я бы (в ущерб компактности кода) сделал бы следующее:
1. Рисовал бы сначала в массив с символами, в который писал бы пробелы или звездочки. (и потом его выводил бы на печать)
2. Сделал бы отдельные функции для рисования каждой из линий (которая модифицирует массив)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы