空心三角形程序:*图案

时间:2014-02-23 07:22:03

标签: java

我正在尝试打印此模式,但我无法在最后一行获得打印*

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

但我最终得到了这个,最后一行是问题

                       *
                   *        *
               *                 *
          *                           *   
     *                                   *  

for (int i = 1; i <= m; i++) {
    for (int j = 1; j <= m - i; j++) {
        System.out.print(" ");
    }
    for (int k = 1; k < i; k++) {
        if (k == 1 || k == i - 1)
            System.out.print("*");
        System.out.print("  ");
    }
    System.out.println(" ");
}

2 个答案:

答案 0 :(得分:1)

你几乎在那里。如果*处理最后一行,您只需要包含条件即可写k,换句话说i == m所以

if (k == 1 || k == i - 1)

看起来应该更像

if (k == 1 || k == i - 1 || i == m) 

另一件事是,您需要保证无论您是否打印*,都必须在行中添加两个字符,即"* "" "。目前,您只打印"*"" ",这不是您想要的。改变

if (k == 1 || k == i - 1 || i == m) 
    System.out.print("*");
System.out.print("  ");

if (k == 1 || k == i - 1 || i == m) 
    System.out.print("*");
else 
    System.out.print(" ");
System.out.print("  ");

或者更简单

if (k == 1 || k == i - 1 || i == m) 
    System.out.print("* ");
else 
    System.out.print("  ");

答案 1 :(得分:0)

        import java.util.*;
        import java.awt.*;
        class Spiral
          {
         public static void main(String[] args)
                {    
          int m=12;
          for (int i = 1; i <= m; i++) {
              for (int j = 1; j <= m - i; j++) 
               {
              System.out.print(" ");
                }
          for (int k = 1; k < i; k++) {
           if (k == 1 || k == i-1 )
            System.out.print("*");

          System.out.print("  ");
               if(i==m)
               {
            for(int n=2;n<12;n++)
              {
            System.out.print("*");
            System.out.print(" ");

          break;
              }
           }
      System.out.println(" ");
       }

      }
   }

enter image description here