Java ascii art используя циклы - PullRequest
       11

Java ascii art используя циклы

3 голосов
/ 25 октября 2011

Я пытаюсь написать программу на Java, которая получает целое число от пользователя (предположим, что данные действительны), а затем выводит ромбовидную форму в зависимости от размера целого числа, т. Е. Пользователь вводит 5, вывод будет:

--*--
-*-*-
*---*
-*-*-
--*--

Пока у меня есть:

if ( sqr < 0 ) {
        // Negative
        System.out.print("#Sides of square must be positive");
    }

    if ( sqr % 2 == 0 ) {
        // Even
        System.out.print("#Size (" + sqr + ") invalid must be odd");
    } else {
        // Odd
        h = ( sqr - 1 ) / 2; // Calculates the halfway point of the square
        // System.out.println();
        for ( j=0;j<sqr;j++ ) {    

            for (i=0;i<sqr;i++) {

                if ( i != h) {
                    System.out.print(x);
                } else {
                    System.out.print(y);
                }

            }

            System.out.println();
        }

    }

, который просто выводит

--*--
--*--
--*--
--*--
--*--

Любые идеи, я думал об уменьшении значения h, но этопроизводят только левую сторону алмаза.

Ответы [ 2 ]

2 голосов
/ 25 октября 2011
void Draw(int sqr)
        {
            int half = sqr/2;
            for (int row=0; row<sqr; row++)
            {
                for (int column=0; column<sqr; column++)
                {
                    if ((column == Math.abs(row - half)) 
                        || (column == (row + half)) 
                        || (column == (sqr - row + half - 1)))
                    {
                        System.out.print("*");
                    }
                    else
                    {
                        System.out.print("_");
                    }
                }
                System.out.println();
            }
        }

Хорошо, теперь это код, но, как я увидел S.L. Комментарий Барта Я только что понял, что это домашнее задание. Поэтому я настоятельно рекомендую вам понять, что написано в этом коде, прежде чем использовать его в качестве окончательного. Не стесняйтесь задавать любые вопросы!

2 голосов
/ 25 октября 2011

Посмотрите на ваше состояние:

 if ( i != h )

Это касается только номера столбца (i) и средней точки (h). Вам нужно условие, которое смотрит на номер столбца и номер строки. Точнее, вам нужно условие, которое просматривает номер столбца, номер строки и расстояние от номера столбца до средней точки.
Так как это домашнее задание, я оставляю вам определение точной формулы, но я готов поделиться еще некоторыми подсказками, если они вам понадобятся. Удачи!

...