打印菱形(Java版本)
打印菱形应该是我们刚刚开始学算法的经常遇到的题目了,今天又重新手写了一遍,这里采用分段式打印法,将打印菱形的算法重新实现了一下。其实打印菱形很大程度上可以归结为临界值问题,即什么时候开始打印空格,什么时候开始打印图标,什么时候打印换行符,理清了思路实现起来就比较容易了。以下是分段式打印法的具体实现:
package math;
import org.junit.Test;
/**
* 打印菱形
* @author jsyuger
* 输入n,打印出2n-1行的菱形
* 比如输入3,则打印:
* | *
* | * * *
* | * * * * *
* | * * *
* | *
*/
public class PrintDiamond {
//打印菱形的实现方法
public void print(int n) {
//打印菱形上半部分
for(int i=0;i<n;i++) {
for(int a=n-1;a>=0;a--) {
if(i<a) System.out.print(" ");
}
for(int b=0;b<2*i+1;b++) {
System.out.print("*");
}
System.out.print("\n");
}
//打印菱形下半部分
for(int i=1;i<n;i++) {
for(int a=1;a<n;a++) {
if(i>=a) System.out.print(" ");
}
for(int b=0;b<(2*n-1)-2*i;b++) {
System.out.print("*");
}
System.out.print("\n");
}
}
@Test
public void test() {
print(5);
}
}
控制台输出: