笔者写了两种方法,更推荐使用第二种,不但算法效率更好,而且思路简单
package day01;
import java.util.Scanner;
public class printdiamond {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i, j, n, k, t;
Scanner input = new Scanner(System.in);
n = input.nextInt();
System.out.println();
for (i = 1, k = n, t = n; i <= n; i++, k--, t++) {
for (j = 1; j <= 2 * n - 1; j++) {
if (j < k)
System.out.print(" ");
if (j >= k && j <= t)
System.out.print("*");
}
System.out.print("\n");
}
for (i = 1, k = 1, t = 2 * n - 1; i < n; i++, k++, t--) {
for (j = 1; j <= 2 * n - 1; j++) {
if (j <= k)
System.out.print(" ");
if (j > k && j < t)
System.out.print("*");
}
System.out.print("\n");
}
/**
* 算法的优化
*/
/***
* 修改算法,算法的优化,输出正三角形 改进思路:先实现行的输出,先输出空格,然后在输出星星
*/
for (i = 1; i <= n; i++)// 输出多少行
{
for (j = 1; j < n - i + 1; j++)// 输出空格
System.out.print(" ");
for (k = 1; k <= 2 * i - 1; k++)
System.out.print("*");// 输出星星
System.out.println();
}
for (i = 1; i < n; i++)// 输出多少行
{
for (j = 1; j <= i; j++)// 输出空格
System.out.print(" ");
for (k = 1; k <= 2 * n - 1 - 2 * i; k++)
System.out.print("*");// 输出星星
System.out.println();
}
}
}