面试基础题系列(一)java 打印 ,空心菱形

最近要参加面试,比较 之前翻译过一篇文章《通过回顾基础来加强你的编程技能》,自己也要巩固一下基础,也不至于面试这一关而无缘工作机会。

老师说过面试很有可能考打印空心菱形,考验你的逻辑和对for循环的理解,所以在网上搜索下,再加上自己的理解,就有了下面针对空心菱形的代码。大家多多交流,共同进步哈~

以层数5为例:

分析的思路为下图:


面试基础题系列(一)java 打印 ,空心菱形_第1张图片


所以我们的目标就可以分解为两个部分:空格的数量和*的数量

打印部分也可以分为两部分:以菱形的中间部分为界线,上半部分和下半部分。

上半部分:

//空心菱形
	//Hollow diamond
	public static void hollowDiamond(){
		try{
		BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
		System.out.println("请输入菱形的层数(>=3的整数):");
		String hd=buf.readLine();
		int layer=Integer.parseInt(hd);
		//保证了菱形的特性,即层数为奇数
		//层数以5为例
		if(layer%2==0)
		{
			layer=layer-1;
		}
		for(int i=0;i3,2->2,3->1,4->0
				for(int k=0;k
输出为:

面试基础题系列(一)java 打印 ,空心菱形_第2张图片

下半部分:

}else{
				//下半部分菱形,和上面正好相反
//i的取值i=3,i=4
//3->2,4->3
				for(int k=0;k<=i-(layer-(layer/2+1));k++){
					System.out.print(" ");
				}
				for(int j=1;j<=(layer-i)*2-1;j++){
					if(i==layer-1){
					 System.out.print("*");
					}else{
						if(j==1 || j==(layer-i)*2-1){
							System.out.print("*");
						}else{
							System.out.print(" ");
						}
					}
				}
				
				System.out.println();
			}
		}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
输出为:

面试基础题系列(一)java 打印 ,空心菱形_第3张图片

把两个部分放在一起就是下面的效果:

面试基础题系列(一)java 打印 ,空心菱形_第4张图片

最后想看其他的菱形打印方法,可以点击下面的地址:http://hb0308513.iteye.com/blog/698114

你可能感兴趣的:(05.Java)