只用两个for循环打印出菱形图案
代码如下:
public static void main(String[] args) {
int gs=-1; //初始化每行要打印的字符个数 在循环开始每次加2,这里赋值-1
int lines=17; //设置菱形的高度(打印图形的行数以及列数),设置的数值应为奇数
for(int i=1;i<=lines;i++) { //以行为单位做循环
gs=gs+((i<=(lines/2+1))?2:-2); //计算此(i)行需要打印的字符数量
//如果当前行小于等于菱形高度(行数或列数)的一半+1,那么需要打印字符的数量+2
//如果当前行大于菱形高度的一半+1,那么打印字符的数量-2
//达到最大打印字符长度之前做+2运算,之后做-2运算
for(int j=1;j<=lines;j++) { //以列为单位循环
if (j>(lines-gs)/2 && j<((lines-gs)/2+gs+1)) { //判断该位置显示的是字符还是空格(字符显示的坐标范围)
//“(lines-gs)/2”是该行要打印的字符前的最后一个空格的坐标
//“(lines-gs)/2+gs+1”是该行要打印的字符后面的第一个空格的坐标值
System.out.print("O"); //显示字符O
}else {
System.out.print(" ");//如果不是字符显示的坐标则显示空格
}
}
System.out.println();
}
}