2013-08-25 11 views
-3

У меня есть вопрос относительно внешнего цикла для создания треугольника или пирамиды, как правило, мы кодируем его с 3 "для", сначала это строка, вторая - это пробел, а третья - "*", однако, иногда я путать о первом, для которого является внешний цикл, например:Java loops confusion

  * 
     * * * 
     * * * * * 

для вышеупомянутой пирамиды, первый цикл должен быть for(int i=0;i<=3;i++) или for(int i=0;i<=5;i++)?

+0

разместить свой код .. –

+3

Мы не пишем код для вас. Действительно, если вы не можете понять, просто попробуйте и посмотрите, сколько итераций требуется внешнему циклу. Вам не нужно правильно вводить свой код в первый раз, вы узнаете гораздо больше, просто написав программы, а затем отлаживайте их, если что-то не так. –

ответ

1

Вы можете попробовать его с этой ПОДСКАЗКОЙ: -

for (int i = rows; i > x; i--) { ... } 

Для каждой строки, вы должны сначала напечатать некоторые пробела, а затем распечатать звезда. Количество пробелов должно уменьшаться по одному в строке, а число звезд должно увеличить

ОБНОВЛЕНО С ПОЛНОЙ КОД: -

class Pyramid 
{ 
    public static void main(String[] args) 
    { 
     int x=11; 
     int y=x/2; // spaces 
     int z=1; // *`s 

     for(int i=0;i<3;i++) 
     { 
      for(int j=0;j<y;j++) 
      { 
       System.out.print(" "); 
      } 
      for(int k=0;k<z;k++) 
      { 
       System.out.print("*"); 
      } 

      y=y-1; 
      z=z+2; 
      System.out.println(); //new line 
     } 

    } 
} 
+0

Я думаю, что это приведет OP к еще большей путанице. Направление итерации не имеет большого значения для этой проблемы. Кроме того, казалось бы, у ОП уже есть код для генерации треугольников, но у них просто есть проблемы с его модификацией. (Конечно, OP должен сначала опубликовать свой код.) –

+0

@MattiasBuelens: - Я полностью согласен с вами, но я только что объяснил, как OP может продолжить проблему. ** Для каждой строки вы должны сначала напечатать несколько пробелов, а затем распечатать звезды. Количество пробелов должно уменьшаться на единицу в строке, а количество звезд должно увеличиваться ** –

+0

Достаточно справедливо. Я бы предположил, что их код уже работает так, но нам нужно будет убедиться, что это так. –

0
class Pyramid 
{ 
    public static void main(String[] args) 
    { 
     for(int j=1;j<=5;j+=2) //for lines 
     { 
       for(int i=1;i<=j;i++) //for stars and spaces 
       { 
        System.out.print("* "); 
       } 
       System.out.println(); //newline 
     } 
    } 
} 
+0

Спасибо за сообщение, вы указали, что первый цикл - это строка, но, используя ваш код, он напечатал 3 строки, так почему вы использовали j <= 5, но не j <= 3? Я думаю, что 5 на самом деле # звезд, не так ли? Но ваш первый цикл касается строк – user2711992