- public class Demo01 {
- public static void main(String[] args) {
- for (int x = 1; x <= 6; x++) {
- for (int y = 6; y > x; y--) {
- System.out.print(" ");
- }
- for (int i = 1; i <= x; i++) {
- System.out.print("*" + " ");
- }
- System.out.println();
- }
- for (int i = 1; i < 6; i++) {
- for (int j = 1; j <= i ; j++) {
- System.out.print(" ");
- }
- for (int j = 5; j >= i; j--) {
- System.out.print("*" + " ");
- }
- System.out.println();
- }
- }
- }
复制代码 *
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
以上是打印结果,
那么我来说说我是怎么想的, 另也请大家一起来玩玩看
首先我把菱形看成2段,上半段为6行,下半段为5行(没问题吧?)
在上半段代码中,外部for loop控制着总行数,与'\n'的输出位置
上半段的两个嵌套for loop:
第一个for循环,控制打印的空格字符,因为总数为6颗星+6个换行符,所以需要打印出12/2-1个空格(总星星数的一半少一个,为什么少1个呢? 因为这个位置用来输出星星的)
第二个for循环控制输出星星与空格符的.
第一个for循环的判断语句,控制语句为什么这样设置?(第一行输出5个空格,第二行输出4个空格,第三行输出3个空格,第4行输出2个空格,正好与外部循环反着来,所以就把它的控制条件关联起来,就如代码所示)
同理,第二个for循环也是如此,只不过他输出的星星与外部循环的i的值是一致的,所以正相关就行;
下半段代码只需要反向思考就行了~~
祝大家学习进步,找到一份好工作.
我是java新手,不是出来秀,只是混混币换技术分的~ 要自我测验第一步啊!
|
|