• 每日练习------使用Java实现输出如下图形。(三角形,空心菱形等)


    题目:使用Java实现输出如下图形。

     

    解题关键:用循环写,分别用循环控制行数.该行内输出的空格和"*"数量

    思路:1)外层for循环控制行数

            2)内层循环控制该行出的空格和"*"数量

            3)如果图像上下堆成,可分为上下半图像的写法

    过程: 接下来我们根据我们的解题思路来一步步写代码

    第一张图

            1)外层for循环控制行数

            for (int i = 1; i <= 3; i++) {

            }

             2)内层循环控制该行出的空格和"*"数量

            for (int j = 2; j >= i; j--){
                         System.out.print(" ");//空格的数量
                        }
                        for (int j = 1; j <= (i*2 -1); j++){
                            System.out.print("*");//"*"的数量
                        }
                        System.out.println();//换行

    完整结果如下:

    为了方便大家使用,下面附上源码:

    1. for (int i = 1; i <= 3; i++) {
    2. for (int j = 2; j >= i; j--){
    3. System.out.print(" ");
    4. }
    5. for (int j = 1; j <= (i*2 -1); j++){
    6. System.out.print("*");
    7. }
    8. System.out.println();
    9. }

    第二张图

               1)上半行数
                    for(int i = 1; i <= 6; i++){

                    }

                2)上半的空格数
                for(int j = 5; j >= i; j--){
                    System.out.print(" ");
                }

                3)上半的"*"数量
                for(int j = 1; j <= (4+i*2); j++){
                    System.out.print("*");
                }
                System.out.println();//换行

                 4)下半行数
            for(int i = 1; i <= 5; i++){
                 5)上半的空格数
                for(int j = 1; j <= i; j++){
                    System.out.print(" ");
                }
                  6)上半的"*"数量
                for(int j = 1; j <=(16 - i*2); j++){
                    System.out.print("*");
                }
                System.out.println();//换行
            }    

     完整结果如下:

     为了方便大家使用,下面附上源码:

    1. //1)上半行数
    2. for(int i = 1; i <= 6; i++){
    3. //2)上半的空格数
    4. for(int j = 5; j >= i; j--){
    5. System.out.print(" ");
    6. }
    7. //3)上半的"*"数量
    8. for(int j = 1; j <= (4+i*2); j++){
    9. System.out.print("*");
    10. }
    11. System.out.println();
    12. }
    13. //4)下半行数
    14. for(int i = 1; i <= 5; i++){
    15. //5)上半的空格数
    16. for(int j = 1; j <= i; j++){
    17. System.out.print(" ");
    18. }
    19. //6)上半的"*"数量
    20. for(int j = 1; j <=(16 - i*2); j++){
    21. System.out.print("*");
    22. }
    23. System.out.println();
    24. }

    第三张图

             //1)上半行数
            for (int i = 1; i <= 9; i++) {
                //2)上半左边空格数
                for (int j = 8; j >= i; j--) {
                    System.out.print(" ");
                }
                //3)上半需要输出"*"位置
                for(int j = 1; j <= (2 * i-1); j++){
                    if(j == 1 || j == (2 * i-1)){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");                    
                    }
                }
                System.out.println();//换行
            }
            //4)下半行数
            for(int i = 1; i <= 8 ; i++){
                //5)下半左边空格数
                for(int j = 1; j <= i ; j++){
                    System.out.print(" ");
                }
                //6)下半需要输出"*"位置
                for(int j = 1 ; j <= (17-2*i); j++){
                    if(j == 1 || j == (17 - 2 * i)){
                        System.out.print("*");
                    }else{
                        System.out.print(" ");
                    }
                }
                System.out.println();
            } 

       完整结果如下:

     为了方便大家使用,下面附上源码:
     

    1. //1)上半行数
    2. for (int i = 1; i <= 9; i++) {
    3. //2)上半左边空格数
    4. for (int j = 8; j >= i; j--) {
    5. System.out.print(" ");
    6. }
    7. //3)上半需要输出"*"位置
    8. for(int j = 1; j <= (2 * i-1); j++){
    9. if(j == 1 || j == (2 * i-1)){
    10. System.out.print("*");
    11. }else{
    12. System.out.print(" ");
    13. }
    14. }
    15. System.out.println();//换行
    16. }
    17. //4)下半行数
    18. for(int i = 1; i <= 8 ; i++){
    19. //5)下半左边空格数
    20. for(int j = 1; j <= i ; j++){
    21. System.out.print(" ");
    22. }
    23. //6)下半需要输出"*"位置
    24. for(int j = 1 ; j <= (17-2*i); j++){
    25. if(j == 1 || j == (17 - 2 * i)){
    26. System.out.print("*");
    27. }else{
    28. System.out.print(" ");
    29. }
    30. }
    31. System.out.println();
    32. }

    第四张图 

             //1)需要循环行数
            for (int i = 1; i <= 8; i++) {
                //2)在该行需要输出的数据位置
                for (int j = 1; j <= 15; j++) {
                    //需要输出的"*"位置
                    if (j <= (9 - i) | (j >= (7 + i))) {
                        System.out.print("*");
                    }
                    //需要输出的空格位置
                    else if (j > (9 - i) | j < (7 + i)) {
                        System.out.print(" ");
                    }
                }
                System.out.println();//换行
            }

    完整结果如下:

    为了方便大家使用,下面附上源码:

    1. //1)需要循环行数
    2. for (int i = 1; i <= 8; i++) {
    3. //2)在该行需要输出的数据位置
    4. for (int j = 1; j <= 15; j++) {
    5. //需要输出的"*"位置
    6. if (j <= (9 - i) | (j >= (7 + i))) {
    7. System.out.print("*");
    8. }
    9. //需要输出的空格位置
    10. else if (j > (9 - i) | j < (7 + i)) {
    11. System.out.print(" ");
    12. }
    13. }
    14. System.out.println();//换行
    15. }

     总结:

            这几张图虽然内容不一样,但编程思想都是差不多的,我们需要理解的是在每一行哪些位置需要输出空格那些位置需要输出"*",这样的话写程序就会很简单,大家也可以试试其他的图像从中找到规律.

    明日练习:输出一个整数的二进制数、八进制数、十六进制数。

    大家可以自己写写,明天中午12点我准时发出我的写法哦,明天12点不见不散

     一生朋友一生情,一生有你才会赢;千山万水总是情,点个关注行不行!

  • 相关阅读:
    【AI副业指南】用AI做心理测试图文号,单月稳赚7000+(附详细教程)
    Flutter 文件读写-path_provider
    android HAL 执行权限写法
    【面试题】 你不知道的JavaScript基础类型
    Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前数据吞吐量(Python)
    VUE 常用炫酷动画库(拿来即用系列)
    世界主要的11种气候类型特点及分布
    c++ 类的继承(二)
    HCIP---VLAN
    2024年腾讯云2核2G4M服务器并发承载能力大测试:性能数据一览无余!
  • 原文地址:https://blog.csdn.net/SSSS__AS/article/details/125995031