Java基础:实心菱形与空心菱形

在java基础题中属于比较经典的for循环的题目,打印出一个实心的菱形和空心的菱形,对于菱形打印的思路,我们可以把菱形拆分为两部分,可以看做是上面一个三角与下面一个三角的结合

我们以上边菱形高度为6为例:

public class Diamond{
public static void main(String []args){
//上部菱形实现
for(int i=0;i<6;i++) //菱形的高度为6所以我们最外部的循环要做6次
{		for(int j=0;j<5-i;j++) //控制每一行菱形空白的个数
			System.out.print(" ");
		for(int k=0;k<2*i+1;k++) //控制打印的*的数量
			System.out.print("*");
		System.out.println();
}

for(int i=0;i<5;i++) //上部菱形比下部的菱形多了一行,所以长度要-1
{		for(int j=0;j<=i;j++)//与上面不同的是空格由递减变成了递增从1-5变化
			System.out.print(" ");
		for(int k=0;k<2*(4-i)+1;k++)//**的长度也跟上部变化是相反的
			System.out.print("*");
		System.out.println();
}

Java基础:实心菱形与空心菱形_第1张图片
以上是实心菱形的代码

为了实现空心菱形的输出我们可以在实心菱形上略加改动即可
首先我们比较一下实心菱形和空心菱形不难发现,空心菱形只是在输出星号的语句里加了适当的判断,只保留第一位和最后一位输出是 星号,其他全部是空格即可

import java.util.Scanner;
public class Test {
	public static void main(String[]args) {
		for(int i=0;i<6;i++)
		{
			for(int j=0;j<5-i;j++)
			{
				System.out.print(" ");
			}
			for(int k=0;k<2*i+1;k++)
			{
				if(k==0||k==2*i)
				System.out.print("*");
				else
					System.out.print(" ");
			}
			System.out.println();
		}
		for(int i=0;i<5;i++)
		{
			for(int j=0;j<=i;j++)
			{
				System.out.print(" ");
			}
			for(int k=0;k<2*(4-i)+1;k++)
			{
				if(k==0||k==2*(4-i))
				System.out.print("*");
				else
				System.out.print(" ");
			}
			System.out.println();
		}
	}
	}

Java基础:实心菱形与空心菱形_第2张图片

你可能感兴趣的:(自学整理)