В Java, как мне закодировать пирамиду из звездочек, используя вложенные циклы for? - PullRequest
0 голосов
/ 30 мая 2020

Я работаю над заданием, в котором мне нужно использовать вложенные циклы для программирования пирамиды звездочек, которая находится на ее стороне. Результат этой программы должен выглядеть так:

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

Когда я запускаю свою программу, она отображает только последние четыре строки кода. Не знаю, почему не появляются первые три. Вот мой код:

public class Main
{
    public static void main(String[] args) {

        for(int a = 0; a < 8; a++) //1
        {
            if(a < 4){
                for(int b = a; b < 4; b++)
                {
                    System.out.print("*");
                }

            }
            if(a >= 4)
                for(int c = a; c < 4; c++)
                {  
                    System.out.print("*");
                }

            System.out.println();
        } //loop 1

    }
}

И вот мой результат:

****
***
**
*

(После вывода, который я не включил, есть пустое место. Это вызвано внешним для l oop итерация восемь раз.) Как мне сделать так, чтобы моя программа правильно отображала весь код, а не только последние четыре строки?

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 30 мая 2020

В вашем логе несколько ошибок c:

  1. Поскольку вам нужно всего 7 rows, первое l oop должно повторяться до a < 7
  2. В первых 3 рядах ваш nested loop должен повторяться от 0 до a
  3. После этого другой nested loop должен go от a до 7
  4. Лучше использовать if-else вместо двух if операторов

Вот полное решение, которое я тестировал:

for(int a = 0; a < 7; a++) {
     if(a < 4){
          for(int b = 0; b <= a; b++)
               System.out.print("*");
     }else {
          for(int c = a; c < 7; c++)
               System.out.print("*");
     }
     System.out.println();
}

Вывод:

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

EDIT:

Как упоминалось в комментариях, вы также можете разделить внешний l oop на две части, чтобы удалить следующие условия:

for(int a = 0; a < 4; a++) {
     for(int b = 0; b <= a; b++)
          System.out.print("*");
     System.out.println();
}
for(int a = 4; a <= 7; a++) {
     for(int b = a; b < 7; b++)
          System.out.print("*");
     System.out.println();
}
0 голосов
/ 30 мая 2020

Вы близки. Попробуйте что-нибудь вроде этого:

int size = 4;

for(int line = 1; line < size * 2; line++) {
  if(line <= size) {
    for(int i = 0; i < line; i++) {
      System.out.print("*");
    }
  }
  else {
    for(int i = 0; i < size * 2 - line; i++) {
      System.out.print("*");
    }
  }
  System.out.println();
}
...