**java打印菱形的几张方法**
第一种方法有个小bug多打印了一行空白
行数设定的是5行
public class qum
{
public static void main(String[] args){
System.out.println("打印菱形");
System.out.println("方法一");
int h=5;
for(int i=1;i<=h;i++){
for(int j=1;j<=h-i;j++){
System.out.print(" ");}
for(int k=1;k<=2*i-1;k++){
System.out.print("*");
}
System.out.println();
}
for(int i=h-1;i>=0;i--){
for(int j=1;j<=h-i;j++){
System.out.print(" ");}
for(int k=1;k<=2*i-1;k++){
System.out.print("*");
}
System.out.println();
}
System.out.println("方法②");
int n=5;
//前10行.上半部分
for(int i=1;i<=n;i++){//控制行数
for(int k=n-1;k>=i;k--){//打印空格
System.out.print(" ");}
for(int j=1;j<=2*i-1;j++){//打印*
System.out.print("*");}
System.out.println();}
//后9行,下半部分
for(int i=n-1;i>=1;i--){
for(int k=i;k<=n-1;k++){
System.out.print(" ");}
for(int j=1;j<=2*i-1;j++){
System.out.print("*");}
System.out.println();}
System.out.println("方法三");
//菱形看成上下两部分,上五下四,所以,第一个for循环有5次,第二个for循环有4次
for( int i = 1; i <= 5; i++){
//将空格和*分开看,看" "的变化i=1时,它是4,2的时候是3,找规律
for( int j = 1; j <= 5-i ; j++){
System.out.print(" ");}
for( int k = 1; k <= 2*i-1 ; k++){//找规律,i是 1 3 5 7 9基数
System.out.print('*');}
//换一行
System.out.println();}
for( int i = 1; i <= 4; i++){
for( int j = 1;j <= i; j++){//空格 1 2 3 4 so
System.out.print(" ");}
for( int k = 1; k <= 2*(4 - i + 1 )-1; k++){//* 7 5 3 1 倒着来的基数
System.out.print('*');
}
System.out.println();
}
System.out.println("方法四 这个方法是某个大佬的 觉得不错特意复制上来给你们借鉴借鉴");
for (int i = 0; i < 9; i++) {//行 9是菱形的高度
for (int j = 0; j < Math.abs(4-i); j++) {//空格 Math.abs绝对值
System.out.print(" ");
}
for (int j = 0; j < 9 - 2 * Math.abs(i - 4); j++) {//打印星星
System.out.print("*");
}
System.out.println();//换行
}
System.out.println("方法五 这个方法是别人的方法");
for(int i = 1; i <= n; i++){
/*
* 先打印空格:
* 第一行打印4个空格
* 第二行打印3个空格
* 第三行打印2个空格
* ...
* 总结出规律:每行打印 ( 总行数 - 当前行数 )个空格
*/
for(int j = 1; j <= n-i; j++){
System.out.print(" ");
}
/*
* 再打印#:
* 第一行打印1个
* 第二行打印3个
* 第三行打印5个
* ...
* 总结出规律:每行打印 (2*当前行数 - 1)个#
*/
for(int k = 1; k <= 2*i-1; k++){
System.out.print("#");
}
//每行打印完毕换行
System.out.println();
}
//打印下半部分等腰三角形
//下半部分等腰三角形要比上半部分的少一行
for(int i = 1; i < n; i++){
/*
* 先打印空格:
* 第一行打印1个空格
* 第二行打印2个空格
* 第三行打印3个空格
* ...
* 总结出规律:每行打印 ( 当前行数 )个空格
*/
for(int j = 1; j <= i; j++){
System.out.print(" ");
}
/*
* 再打印#:
* 第一行打印7个
* 第二行打印5个
* 第三行打印3个
* ...
* 总结出规律:每行打印 (2*(总行数-当前行数) - 1)个#
*/
for(int k = 1; k <= 2*(n-i)-1; k++){
System.out.print("#");
}
//每行打印完毕换行
System.out.println();
}
}
}
方法不止一种
当然还有许多不一样的方法
也许还有比这更简单的代码也许也有更复杂的
但是都能实现效果