画出颠倒的星号三角形

时间:2016-11-10 05:03:24

标签: java nested-loops

输出

          *****
           ***
            *

代码(我的尝试)

    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();
    }

我得到了这个:

     *
       *
         *

我找不到问题,代码应该运行并运行

3 个答案:

答案 0 :(得分: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();
      }

我有A&#34 ;;&#34;在我的第二次在原始循环之后,这使得它只能运行而不是循环!

答案 1 :(得分: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();
}

你是在正确的道路上,但基本上,你只需要反转第一个“for”循环(让它倒数而不是向上)[这个部分做得正确],调整脚本做3行而不是4 [也正确完成],并保留第二个“for”循环,因为它已经考虑了多少行//从前一个代码开始的哪一行。我希望这是有道理的,并解决了你的问题。 :P

答案 2 :(得分: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();
             }