一、首先需要明白打印菱形的一些规律,菱形都是奇数行奇数列,下面以7行7列为例:
\"菱形\"
二、然后就是使用for循环之双层循环嵌套去实现,外层循环控制打印的行数,内层循环控制打印的星星的个数以及空格的个数。接下来就是找到内外层循环的之间的关系,然后开始编码。
三、接下来简单的梳理一下这个7行7列菱形的一些规律以及流程:
1.每一行星星的个数与行数之间的关系:行数2-1,这就是内外层循环之间的关系。
2.打印空格的规律:空格是分布在星星的两侧的,是均分的,即(菱形的行数-每行星星的个数)/2就是一半空格的数量。
3.接下来要考虑下半部分怎么实现,因为是对称的,肯定和上半部分相似。
四、我们先打印上半部分来看看:
public class lingXingDaYing{
public static void main (String [] args){
int num=7;//自定义外层循环的次数即菱形的行数
for(int i=1,i<=4,i++){ //这里写4是因为我们先打印上半部分
//先打印空格
for(int j=1;j<=(num-(i
2-1))/2;j++){
System.out.print(\" “);
}
//在打印星星
for(int j=1;j<=i2-1;j++){
System.out.print(\"
”);
}
//在打印空格
for(int j=1;j<=(num-(i2-1))/2;j++){
System.out.print(\" \");
}
//每打印完一次都换行
System.out.println();
}
}
}
五、这样的写法可以保证菱形的上半部分以及中间的那一行可以准备的实现,但是下半部分就不行了。通过菱形的上下部分是对称的,可以
推测出第一行相当于最后一行,第二行相当于倒数第二行,第三行相当于倒数第三行,因为是7行7列的菱形,所以行数和为8。
public class lingXingDaYing{
public static void main (String [] args){
int num=7;//自定义外层循环的次数即菱形的行数
for(int i=1,i<=num,i++){ //打印全部
//先判断i的值是否大于4,如果大于4就要改变他的值
//定义一个变量保存i的值,不能直接用i保存,这样会改变他的值,造成死循环。
int m;
if(i>4){
m=num+1-i;
}else{
m=i;
}
//先打印空格
for(int j=1;j<=(num-(m
2-1))/2;j++){
System.out.print(\" “);
}
//在打印星星
for(int j=1;j<=m2-1;j++){
System.out.print(\"
”);
}
//在打印空格
for(int j=1;j<=(num-(m2-1))/2;j++){
System.out.print(\" \");
}
//每打印完一次都换行
System.out.println();
}
}
}
六、菱形(7行7列)已经打印成功。
七、打印一个菱形通过键盘输入行数。
import java.util.Scanner;
public class lingXingDaYing{
public static void main (String [] args){
Scanner scanner=new Scanner(System.in);
int num=scanner.nextint();
for(int i=1,i<=num,i++){ //打印全部
//先判断i的值是否大于4,如果大于4就要改变他的值
//定义一个变量保存i的值,不能直接用i保存,这样会改变他的值,造成死循环。
int m;
if(i>4){
m=num+1-i;
}else{
m=i;
}
//先打印空格
for(int j=1;j<=(num-(m
2-1))/2;j++){
System.out.print(\" “);
}
//在打印星星
for(int j=1;j<=m2-1;j++){
System.out.print(\"
”);
}
//在打印空格
for(int j=1;j<=(num-(m*2-1))/2;j++){
System.out.print(\" \");
}
//每打印完一次都换行
System.out.println();
}
}
}
八、结束.

收藏 打印