用for输出菱形。
import java.util.*; class temp { public static void main(String []args) { System.out.println("请输入奇数:"); Scanner sc=new Scanner(System.in); int count=sc.nextInt(); int b=1; for (int i=1; i<=count; i++) { if (!(i%2==0)) { for (int j=count/2+1;j>b;j--) { System.out.print(" "); } } for (int y=1; y<=i; y++) { if (!(i%2==0)) { System.out.print("*"); } } if (!(i%2==0)) { System.out.println(); b++; } } int a=1; for (int i=count-2; i>0; i--) { if (!(i%2==0)) { for (int j=0; j<a; j++) { System.out.print(" "); } } for (int y=i; y>0; y--) { if (!(i%2==0)) { System.out.print("*"); } } if (!(i%2==0)) { System.out.println(); a++; } } } } //硬写出来的奇葩代码。。。
上面这个是我自己写的 完全没有任何思维 就是用打印空格然后打印星星完成的 硬写出来的
下面是csdn论坛seacean2000写的
public class Test01 { public static void main(String[] args) { printMatrix(21); } static void printMatrix(int n){ if(n%2==0){ System.out.println("please reset parameter"); }else{ for(int i=0;i<(n+1)/2;i++){ for(int j=0;j<n;j++){ if((j<(n/2-i)||j>(n/2+i))){ System.out.printf(" "); }else{ System.out.printf("*"); } } System.out.println();//换行 } for (int i=n/2-1; i>=0; i--) { for (int j=0; j<n; j++) { if (j<n/2-i||j>n/2+i) { System.out.printf(" "); }else{ System.out.printf("*"); } } System.out.println(); } } } }
这个主要要用两重循环来写,打印出的矩阵是由*和空格组成的,矩阵的行和列之间的关系如下所示:
每一行都有奇数个符号组成,打印的行数为:每行的符号数加1,然后取对半。
符号之间的规律是:打印*号的区间为从 列数/2-行数 到 列数/2+行数;剩余部分用空格填充