栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA 好玩程序之星星图案

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA 好玩程序之星星图案

原理:利用循环语句进行打印,输出不同的星星图案

一、打印一个矩形
图案:
  *****
  *****
  *****
  *****
  *****

分析:打一行*,然后循环5次即可

// 代码实现:
for (int i = 1; i <= 5; i++) {
       System.out.println("*****");
}
// 由此可以打印出一个 5 * 5 的矩形
二、打印半个金字塔
图案:
*
**
***
****
*****

分析:第一行输出1个,第n行输出n个。

// 代码实现:
for (int i = 0; i < 5; i++) {
    for (int j = 0; j <= i; j++) {
        System.out.print("*");
    }
    System.out.println();
}
// 最外面的for循环代表的行,内for循环代表的是星星的个数。
三、打印整个金字塔
图案:
    *
   *** 
  *****
 *******
*********

分析:由空格和星星两部分组成

  1. 行数:5
  2. 空格数:4→3→2→1 (5- i ; i++)
  3. 星星数:1→3→5→7→9 (2*i-1 ; i++)
// 代码实现:
// 最外层的for循环代表的是行
for (int i = 1; i <= 5; i++) {
    // 内第一个for循环 打印的是空格
    for (int j = 1; j <= 5 - i; j++) {
        System.out.print(" ");
    }
    // 内第二个for循环 打印的是星星  
    for (int j = 1; j <= 2*i-1; j++) {
        System.out.print("*");
    }
    // 每打印完一层就进行换行   
    System.out.println();
}
// 流程:
// 第一行:先打印4个空格,1个 *,换行           
// 第二行;打印3个空格,3个 *,换行             
// ... 
四、打印空心金字塔
图案:
    *
   * * 
  *   *
 *     *
*********

分析:在“三”的基础上,再加个if判断语句即可。

  1. 确定行数,5行;
  2. 左边的空格也是从 4→3→2→1 (代码保留)
for (int j = 1; j <= 5 - i; j++) {
        System.out.print(" ");
    }
// 这是空格的代码
  1. 第1~4行的星星数都是由第一个和最后一个组成
for (int j = 1; j <= 2*i-1; j++) {
    System.out.print("*");
}
// 在这个基础上进行if判断,如果 j是第一个,或者j是最后一个,输出星星,否则输出空格
for (int j = 1; j <= 2*i-1; j++) {
    if (j == 1 || j == 2*i-1){
        System.out.print("*");
    }else {
        System.out.print(" ");
    }
}
  1. 最后一行全是星星,所以可以在“3”的基础上再加个判断,当行数是最后一行时,输出星星
for (int j = 1; j <= 2*i-1; j++) {
    if (j == 1 || j == 2*i-1 || i == 5){
        System.out.print("*");
    }else {
        System.out.print(" ");
    }
}
// i == 5 即最后一行

接下里是完整代码的实现:

for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= 5-i; j++) {
        System.out.print(" ");
    }
    // 打印的是空格
    for (int j = 1; j <= 2*i-1; j++) {
        // 因为只有第一个和最后一个是星星 所以中间用空格代替
        if (j == 1 || j == 2*i-1 || i==5){
            System.out.print("*");
        }else {
            System.out.print(" ");
        }
    }
    // 打印的是星星
    System.out.println();
    // 每打印完一层就进行换行
}
五、把行数变量化,输出x行的空心金字塔

分析:在“四”的基础上,把行数用一个变量名替换,即可实现想要的效果~

// 实现一个6行的空心三角形
int line_number = 6;
// 定义一个变量,然后把数字换成变量
for (int i = 1; i <= line_number; i++) {
    for (int j = 1; j <= line_number-i; j++) {
        System.out.print(" ");
    }
    // 打印的是空格
    for (int j = 1; j <= 2*i-1; j++) {
        // 因为只有第一个和最后一个是星星 所以中间用空格代替
        if (j == 1 || j == 2*i-1 || i==line_number){
            System.out.print("*");
        }else {
            System.out.print(" ");
        }
    }
    System.out.println();
}
// 所以只要改变line_number,就能实现不同的效果
图案:
     *
    * * 
   *   *
  *     *
 *       *
***********
六、总结
  1. 可以在“五”的基础上去,加Scanner,键盘控制输出图案,十分有趣。
  2. 尝试把矩形给镂空,步骤跟“四”一样。
  3. 构思图案时,可以用笔在纸上画出来,一步一步去推算,然后把想法给到代码。
七、练手图形
图案:
   *       *
 *   *   *   *
 *     *     *
   *       *
     *   *
       * 
// 代码实现
for (int i = 1; i <= 3 ; i++) {
    for (int j = 1; j <= i ; j++) {
        if (j == 1 && i == 2 ){
            System.out.print(" *");  
            // 一个空格
        }else if (j == 1 && i == 3 ){
            System.out.print(" *"); 
            // 一个空格
        }else{
            System.out.print("  ");
            // 二个空格
        }
        // 判断是不是第二,三行的第一个,如果是输出星星
    }
    for (int j = 5; j >= 2*i-1 ; j--) {
        if (j == 5 || j == 2*i-1){
            System.out.print(" *");
            // 一个空格
        } else{
            System.out.print("  ");
            // 二个空格
        }
        if (j == 3 && i == 2){
            System.out.print("   *");
            // 三个空格
        }// 第二行的第七个
        if (j == 5 && i == 3){
            System.out.print("     *");
            // 五个空格
        }
    }
    System.out.println();
}
//        System.out.println("----------------------");
for (int i = 1; i <= 3 ; i++) {
    for (int j = 1; j <= i ; j++) {
        System.out.print("  ");
        // 二个空格
    }
    for (int j = 5; j >= 2*i-1 ; j--) {
        if (j == 5 || j == 2*i-1){
            System.out.print(" *");
            // 一个空格
        }
        else{
            System.out.print("  ");
            // 一个空格
        }
    }
    System.out.println();
}

思路:我是三行,三行的做。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390286.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号