打印规则星图 空心星图 (如有漏洞请指出)

来源:互联网 发布:美国黑人比例 知乎 编辑:程序博客网 时间:2024/04/29 11:18
2010-05-01 15:40


package print_pic;

import java.util.Scanner;

public class _star {
public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);
   System.out.println("请输入行数:");
   int line = sc.nextInt();
   while(line%2==0) {
    System.out.println("请输入奇数行:");
    line=sc.nextInt();
   }
   _star p = new _star();
   System.out.println("打印实心星图");
   p.display1(line);
   System.out.println("打印空心星图");
   p.display2(line);
}

public void display1(int lin)// 显示实心星图
{
   for (int i = 1; i <= lin ; i++) {
    if(i<=(lin+1)/2){
     for (int j = 1; j<=3+(lin+1)/2-i; j++) {
      System.out.print(" ");
     }
     for (int j=1;j<=2*i-1 ;j++ ) {
      System.out.print("*");
     }
     System.out.println();
    }else{
     for (int j = 1; j<=3+i-(lin+1)/2; j++) {//a1+(n-1)d
      System.out.print(" ");
     }
     for (int j=1;j<3+2*lin-2*i-1;j++ ) {//a1-(n-1)d;2lin-1-(i-lin-1)2
      System.out.print("*");
     }
     System.out.println();
    }
   }
}

public void display2(int lin)// 实现空心星图
{
   for (int i = 1; i <= lin ; i++) {
    if(i<=(lin+1)/2){
     for (int j = 1; j<=3+(lin+1)/2-i; j++) {
      System.out.print(" ");
     }
     for (int j=1;j<=2*i-1 ;j++ ) {
      if(i!=1&&j==1||j==2*i-1)
       System.out.print("*");
      else System.out.print(" ");
     }
     System.out.println();
    }else
    {
     for (int j = 1; j<=3+i-(lin+1)/2; j++) {//a1+(n-1)d
      System.out.print(" ");
     }
     for (int j=1;j<=3+2*lin-2*i-2;j++ ) {//a1-(n-1)d;2lin-1-(i-lin-1)2
      if(i!=lin&&j==1||j==3+2*lin-2*i-2)
       System.out.print("*");
      else System.out.print(" ");
     }
     System.out.println();
    }
   }
}
}