要求:使用Java快速构建一个菱形,要求使用*字符
看到题目时,你脑子里首先会想到什么?
如果你还没有一个程序思维,你也许想到的是怎么对折反转三角形,然后将它打印出来。
其实不然,我们这里直接一行一行就可以把它打印在屏幕上
1.首先,我们发现菱形的*从上往下依次增多,到一定程度后又依次减少到1,每层的变化都是1,可见我们可以在这里使用for循环。
2.想象把这个菱形放在一个矩形内部,菱形的边框是不是有空格才到矩形的边框,菱形的“腰子”与矩形的两条那边相切,好,我们不难发现从上到下,空格数量的变化恰好与菱形内部“*”的变化趋势相反,每层的变化也是1,好了。我们这里也可以使用for循环。
3.到这一步,我们不难得出思路,就是把这个菱形一分为二,上面两个for循环,一个给“*”,一个给空格,下面的for从菱形的腰部开始,在它的腰部那一层,空格数量为1.
4.这样,这个问题的思路就完美出现在我们面前。
5.如果你还不明白,请看下面的代码,更为详细的解释在代码的注释里面。
话不多说,直接上代码:
public class For{
public static void main(String[] args){
//首先。把菱形看成上下两部分,上五下四,所以,第一个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();
}
}
程序的运行结果如下:
有其他问题欢迎与我交流,私信或邮箱:[email protected]
如果文章对您有用,不妨点个赞,您的支持是我前进路上最大的鼓励!!!