2016-11-10 6 views
-1

OUTPUTDraw вниз звездочка треугольник

  ***** 
      *** 
      * 

Код (моя попытка)

for (int lines = 3; lines >= 1; lines--) 
    { 
     if (lines == 3) 
      System.out.printf("%1s", " "); 
     else if (lines == 2) 
      System.out.printf("%2s", " "); 
     else if (lines == 1) 
      System.out.printf("%3s", " "); 

     for (int stars = 1; stars <= 2* lines - 1; stars++); 
     { 
      System.out.print('*'); 
     } 

     System.out.println(); 
    } 

и я получаю это:

 * 
     * 
     * 

Я не могу найти проблему, код должен работать и работа

+0

Вам нужно показать, что вы попробовали, чтобы мы могли вам помочь. – HaroldSer

+0

Значит, вы даже не собираетесь делать домашнее задание? – John3136

ответ

1
 for (int lines = 3; lines >= 1; lines--) 
    { 
     if (lines == 3) 
      System.out.printf("%1s", " "); 
     else if (lines == 2) 
      System.out.printf("%2s", " "); 
     else if (lines == 1) 
      System.out.printf("%3s", " "); 

     for (int stars = 1; stars <= 2* lines - 1; stars++) 
      System.out.print('*'); 

     System.out.println(); 
     } 

У меня А ";" ПОСЛЕ МОЯ ВТОРАЯ ДЛЯ ЗАХВАТА В ОРИГИНАЛЕ, КОТОРЫЙ ВЫЗЫВАЛ, ЧТО ТОЛЬКО РАБОТАЕТ ОДИН РАЗ И НЕ БУДЕТ ЛОЙ!

+0

Пожалуйста, отключите блокировку крышки –

0

Попробуйте что-нибудь подобное е это, возможно:

for(int lines = 3; lines >= 1; lines--) 
{ 
if (lines == 1)  
    System.out.printf("%3s", " ");` 
else if (lines == 2) 
    System.out.printf("%2s", " "); 
else if (lines == 3) 
    System.out.printf("%1s", " "); 

for(int stars = 1; stars <= 2 * lines - 1; stars++) 
    System.out.print ('*'); 

System.out.println(); 
} 

Вы были на правильном пути, но в принципе, вам нужно всего лишь повернуть вспять первый «для» цикла (сделать его отсчет, а не вверх) [эта часть была сделана правильно], отредактируйте скрипт, чтобы сделать 3 строки вместо 4 [также выполнено правильно], и оставьте второй цикл «для», как это было первоначально, потому что он уже учитывает, сколько строк есть // какая строка вы используете из предыдущего кода , Надеюсь, это имело смысл и решило вашу проблему. : P

+0

Я все еще получаю только 3 "*" в нисходящей диагонали – zeglr

+0

: o Он работает для меня, вы уверены, что скопировали его правильно? : P –

+0

yep, я не уверен, в чем проблема:/ – zeglr

0

Вы можете попробовать это; хотя код не аккуратный, он работает, и он основан на исходном коде:

for(int stars =5,lines = 1,j; lines <= 4; lines++) 
      { 
       if (lines == 1)  
        System.out.printf("%1s", " "); 
       else if (lines == 2) 
        System.out.printf("%2s", " "); 
       else if (lines == 3) 
        System.out.printf("%3s", " "); 
       else if (lines == 4) 
        System.out.printf("%4s", " "); 
       j=stars; 
       for( ; j > 0; j--) 
        System.out.print ('*'); 
       stars-=2; 
       System.out.println(); 
      } 
0

Я думаю, что это ваша работа на дому вещи, и вы можете узнать больше об этих накрест в этой ссылке. Star Pattern Example

В любом случае, для вашего Star кейс для программы, я думаю, вы ищете решение, как показано ниже.

int i, j, k; 
for (i = 4; i >= 1; i--) { 
    for (j = 5; j > i; j--) { 
     System.out.print(" "); 
    } 
    for (k = 1; k < (i * 2); k++) { 
     System.out.print("*"); 
    } 
    System.out.println(); 
} 

Надеюсь, что это поможет.

Смежные вопросы