明确
*外层循环控制的输行数
*内层循环控制的是每一行的个数
实心菱形:
public static void main(String[] args) {
//第一个外循环先打印菱形前4行
for (int i = 0; i < 4; i++) {
//i = 0 1 2 3
//内层循环1,控制的是每行空格数 : 第一行3个空格, 第二行2个空格,第三行1个空格,第四行0空格
for (int j = i+1; j < 4 ; j++)
{
System.out.print(" ");
}
//内层循环2。控制的是每行*数 : 第一行1个*,第二行3个*…5
for (int j = 0; j < i*2+1 ; j++)
{
System.out.print("*");
}
//一次外循环换一次行
System.out.println();
}
//第二个外循环打印下面3行 i1 3 2 1
for (int i1 = 3; i1 > 0 ; i1--)
{
//打印下面3行每行空格的数量
for (int i = 0; i < 4-i1; i++)//这个倒过来用减法
{
System.out.print(" ");
}
//打印下面3行每行*的数量
for (int j = 0; j < i1*2-1 ; j++)
{
System.out.print("*");
}
System.out.println();
}
}
打印结果:
空心菱形:
public static void main(String[] args) {
//外层循环控制的输行数 4 行
for (int i = 0; i < 4; i++)
{
//i = 0 1 2 3
//内层循环1,控制的是空格列数 空格数跟原本的还是不变
for (int j = i+1; j < 4 ; j++)
{
System.out.print(" ");
}
for (int j = 0; j < i*2+1 ; j++)
{
//原本实心的现在只打印这一行的第一个和最后一个 用if语句来判断
if(j == 0 || j == i*2)
{
System.out.print("*");
}
//这一行其余的地方来打空格
else
{
System.out.print(" ");
}
}
//换行
System.out.println();
}
//打印下三行i1 3 2 1
for (int i1 = 3; i1 > 0 ; i1--) {
//空格数和原来不变
for (int i = 0; i < 4-i1; i++)
{
System.out.print(" ");
}
for (int j = 0; j < i1*2-1 ; j++)
{
//原本实心的现在只打印这一行的第一个和最后一个 用if语句来判断
if(j == 0||j == i1*2-2)
{
System.out.print("*");
}
//这一行其余的地方来打空格
else
{
System.out.print(" ");
}
}
System.out.println();
}
}
打印结果: