рисовать фигуры (цифры) с помощью петель - PullRequest
0 голосов
/ 04 марта 2019

Я только начинаю с Java, и мой учитель попросил меня нарисовать следующую форму чисел:

123456654321
 2345665432
  34566543
   456654
    5665
     66
    5665
   456654
  34566543
 2345665432 
123456654321

image

Пока я былЯ могу нарисовать первую линию и часть середины, используя этот код:

 int sz = 6;

    for (int i =1;i<=sz;i++)
        System.out.print(i);
    for(int j =sz;j>1;j--)
        System.out.print(j);

    for(int i =1; i<=sz;i++){
        System.out.println(i);
        for(int j=0;j<=i;j++){
            System.out.print(" ");
        }
    }

У меня проблемы с остальной частью среднего тела.Может кто-нибудь помочь мне нарисовать это, используя вложенные циклы?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Сначала вы строите массив, затем пересекаете линии и строите их:

int currentItem = 1;
int items[] = new int[12];
for (int index = 0; index < items.length; index++) {
    items[index] = (index < 6) ? currentItem++ : currentItem--;
}

for (int index2 = 0; index2 < 12; index2++) {
    String line = "";
    int limit = (index2 < 6) ? index2 : (12 - index2);
    for (int index3 = 0; index3 < items.length; index3++) {
        line += ((index3 >= limit) && (index3 < items.length - limit)) ? " " : items[index3];
    }
    System.out.println(line);
}
0 голосов
/ 04 марта 2019

Вы должны идти построчно, потому что после println() вы не можете вернуться туда.

Для верхней половины шаблона вы можете использовать это.

int sz = 6;

   for(int d = 1;d<=sz;d++){

    for (int i = d;i <= sz;i++) //for increasing numbers
        System.out.print(i);
    for(int j=sz;j>=d;j--)  //for decreasing numbers
        System.out.print(j);

    System.out.println(); //for newline

    for(int m=0;m<d;m++) // for spaces
        System.out.print(" ");
   }
...