题目:打印出如下图案(菱形,有点错位)
*
***
*****
*******
*********
*******
*****
***
*
程序分析:先把图形分成两部分来看待,前五行一个规律逐行增加,分别为1、3、5、7、9,后四行一个规律逐行减少,分别为7、5、3、1,这是一个奇数数列,每一行的星号+空格的个数为10位。
从给出的图案可以看出每一行中间位置的“*”都是在第5位,(在数组中则下标为4),开始打印星号的位置跟中点有关系,只看上部分(行号-星号开始的下标), 1—5-1=4,2—5-2=3,3—5-3=2,4—5-4=1,5—5-5=0 。下半部分则跟所在行有关(行号-星号开始的下标), 1-1,2-2,3-3,4-4。
利用双重 for循环 ,第一层控制行,第二层控制列,并将上下两部分分开来处理。
public class YuanJian { /*******15.菱形可以这样玩**************/public static void main(String[] args){ int n = 5; //设置上半部分菱形的行数 printStar(n); //调用输出方法 } //打印星星 private static void printStar(int n){ //打印上半部分 for(int i=0;i<n;i++){ for(int j=0;j<2*n;j++){ if(j<n-i) System.out.print(" "); if(j>=n-i && j<=n+i) System.out.print("*"); } System.out.println(); } //打印下半部分 for(int i=1;i<n;i++){ System.out.print(" "); for(int j=0;j<2*n-i;j++){ if(j<i) System.out.print(" "); if(j>=i && j<2*n-i-1) System.out.print("*"); } System.out.println(); } } }
代码示例:
运行示例:
学会了吗?赶紧试一试吧!