Как сделать прямоугольник из символов? - PullRequest
1 голос
/ 29 мая 2020

Как сделать прямоугольник из символов? Мне нужно, чтобы такая картинка появлялась в консоли

 **********
*          *
*          *
*          *
 **********

Но я получаю следующее:

********* 
********* 
********* 
********* 
********* 

Стороны a и b вводятся с консоли.

    int a = requestNumber();
    int b = requestNumber();
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < b; j++) {
            if (j == 0 || j < (b - 1))
            System.out.print("*");
            else {
                System.out.print(" ");
            }
        }
        System.out.println();
    }
}

Ответы [ 2 ]

1 голос
/ 29 мая 2020
public class Rectangle {
    public static void main(String[] args) {
        Rectangle rectangle = new Rectangle();
        rectangle.printRectangle(7,9);
    }

    private void printRectangle(int row, int col) {
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                if ((isFirstOrLastRow(i, row) && isFirstOrLastCol(j, col))
                        || !(isFirstOrLastRow(i, row) || isFirstOrLastCol(j, col))) {
                    System.out.print(" ");
                }
                else {
                    System.out.print("*");
                }
            }
            System.out.println();
        }
    }

    private boolean isFirstOrLastRow(int currentRow, int row) {
        return currentRow == 0 || currentRow == row - 1;
    }

    private boolean isFirstOrLastCol(int currentCol, int col) {
        return currentCol == 0 || currentCol == col - 1;
    }
}

Четыре угла и среднее положение должны выводить пробелы, поэтому мы должны судить, являются ли они четырьмя углами или средним положением , Я использую isFirstOrLastRow и isFirstOrLastCol, чтобы помочь судить.

вот результат для ввода 7,9

 ******* 
*       *
*       *
*       *
*       *
*       *
 ******* 
0 голосов
/ 29 мая 2020

Довольно лаконичный способ сделать это, всего несколько строк:

int a = requestNumber();
int b = requestNumber();

System.out.println(" " + new String(new char[a]).replace("\0", "*"));
for (int i = 0; i < b; i++) {           
    System.out.println("*" + new String(new char[a]).replace("\0", " ") + "*");
}
System.out.println(" " + new String(new char[a]).replace("\0", "*"));

EDIT: исправлена ​​опечатка, теперь работает!

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