嵌套for循环的基础直角三角形——四个方向打印

简介: 嵌套for循环的基础直角三角形——四个方向打印

嵌套循环是一个很重要的循环格式。特别是对于后期的数组,排序,链表等等内容都有着直接的关系,所以这里必须要学明白,我们使用打印型号的方式来练习它。一定要熟练掌握。



外层i与内容j控制的轴向

public static void main(String[] args) {
        int size = 5;
        // 外层循环控制行
        for (int i = 0; i < size; i++) {
            // 内层循环控制列
            for (int j = 0; j < size; j++) {
                System.out.print("y轴* "+j);
            }
            System.out.println("x轴"+i); // 换行
        }
    }

效果:

可以看到X轴控制的是行数,Y轴控制的是列数。

这里可以理解成一个二维矩阵,矩阵就是:

在数学中,矩阵是一个按照长方阵列排列的复数或实数集合,其最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。

1、打印5x5星号矩阵

public static void main(String[] args) {
        int size = 5;
        // 外层循环控制行
        for (int i = 0; i < size; i++) {
            // 内层循环控制列
            for (int j = 0; j < size; j++) {
                System.out.print("* ");
            }
            System.out.println(); // 换行
        }
    }

二维矩阵的星号效果:

2、打印左下角直角三角形

这里需要控制内容的【j】来处理列的输出个数。

public static void main(String[] args) {
        int size = 5;
        // 外层循环控制行
        for (int i = 0; i < size; i++) {
            // 内层循环控制列
            for (int j = 0; j <= i; j++) {
                System.out.print("* ");
            }
            System.out.println(); // 换行
        }
    }

 

3、打印左上角直角三角形

public static void main(String[] args) {
        int size = 5;
        // 外层循环控制行
        for (int i = 0; i < size; i++) {
            // 内层循环控制列
            for (int j = size; j > i; j--) {
                System.out.print("* ");
            }
            System.out.println(); // 换行
        }
}

4、打印右上角直角三角形

右上角的直角三角形需要单独的使用一个内循环用来打补丁,我们可以看到右上角打印的话每一行需要递增一个,也就是正序,直接添加一个正序输出的空格即可。

public static void main(String[] args) {
        int size = 5;
        // 外层循环控制行
        for (int i = 0; i < size; i++) {
            for(int j = 0; j<i; j++){
                System.out.print("  ");
            }
            // 内层循环控制列
            for (int j = size; j > i; j--) {
                System.out.print("* ");
            }
            System.out.println(); // 换行
        }
    }

5、打印右下角的三角形

打印右下角的三角形需要再最初的时候就要打印空格来占位,占位的顺序是4/3/2/1,所以肯定是倒序输出。

public static void main(String[] args) {
        int size = 5;
        // 外层循环控制行
        for (int i = 0; i < size; i++) {
            for(int j = size-1; j > i; j--){
                System.out.print("  ");
            }
            // 内层循环控制列
            for (int j = 0; j <= i; j++) {
                System.out.print("* ");
            }
            System.out.println(); // 换行
        }
    }

最后我们可以看到右下角直角。

6、菱形打印

在右上角和右下角的代码补丁中将2个空格替换成一个空格即可。

public static void main(String[] args) {
        int size = 5;
        // 外层循环控制行
        for (int i = 0; i < size; i++) {
            for(int j = size-1; j > i; j--){
                System.out.print(" ");
            }
            // 内层循环控制列
            for (int j = 0; j <= i; j++) {
                System.out.print("* ");
            }
            System.out.println(); // 换行
        }
                // 外层循环控制行
        for (int i = 0; i < size; i++) {
            for(int j = 0; j<i; j++){
                System.out.print(" ");
            }
            // 内层循环控制列
            for (int j = size; j > i; j--) {
                System.out.print("* ");
            }
            System.out.println(); // 换行
        }
    }

效果:

大型菱形15x15

总结

学习Java的for循环嵌套是非常必要的,因为它可以帮助我们更有效地处理多维数据结构,比如二维数组、三维数组等。这种嵌套循环结构允许我们在每个维度上遍历数据元素,并对每个元素执行特定的操作。下面列举一些for循环嵌套学习的必要性:

  1. 提高编程技能:掌握for循环嵌套可以让我们编写出更复杂的程序,实现更高级的功能。这是提高编程技能的一个重要步骤。
  2. 处理多维数据结构:在实际编程中,我们经常需要处理多维数据结构,比如图像处理中的像素矩阵、游戏中的二维地图等。通过for循环嵌套,我们可以方便地遍历这些数据结构中的每个元素,进行各种操作。
  3. 优化算法性能:通过合理使用for循环嵌套,我们可以优化算法的性能。例如,在排序、搜索等算法中,使用嵌套循环可以降低时间复杂度,提高程序的执行效率。
  4. 解决实际问题:许多实际问题需要用到for循环嵌套来解决,比如打印乘法口诀表、生成杨辉三角等。掌握for循环嵌套可以帮助我们更好地解决这类问题。
  5. 增强逻辑思维能力:学习for循环嵌套需要理解循环的嵌套关系和执行顺序,这有助于增强我们的逻辑思维能力和空间想象力。

总之,学习Java的for循环嵌套是非常有必要的,它可以帮助我们提高编程技能、处理多维数据结构、优化算法性能、解决实际问题以及增强逻辑思维能力。

相关文章
汇编语言之常见的汇编指令
汇编语言之常见的汇编指令
2303 0
汇编语言之常见的汇编指令
|
7月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
4月前
|
SQL 存储 NoSQL
简述关系型与非关系型数据库的区别
关系型数据库基于表结构,支持SQL和事务,易于维护但读写性能差、灵活性不足;非关系型数据库格式灵活、速度快、成本低,适用于高并发场景,但缺乏SQL支持与事务机制,复杂查询较弱。
|
7月前
|
Linux Shell 数据处理
十三、Linux Shell脚本:文本处理三剑客之 sed 与 awk
如果说grep是文本处理的“探照灯”,那sed和awk就是“手术刀”和“瑞士军刀”。sed 擅长按行“动手术”,可以轻松地删除、打印或替换特定行的内容,尤其是它的替换功能(s/.../.../)非常强大。而 awk 更厉害,它天生就能看懂按列(字段)分布的数据,像个小型的Excel。你可以让它只打印某几列,或者根据某一列的值做计算和判断,特别适合生成统计报告。
595 1
|
关系型数据库 MySQL 数据库
MySQL 集群部署实战指南:高可用与可扩展的数据库架构
本文深入讲解MySQL集群部署方案,涵盖主从复制、MHA高可用架构及InnoDB Cluster,结合实战配置与监控维护,助力构建高性能、高可用的数据库系统。
1045 0
|
程序员
什么是后门
后门( Back Door )是指一种绕过安全性控制而获取对程序或系统访问权的方法。在软件的开发阶段,程序员常会在软件内创建后门以便可以修改程序中的缺陷。如果后门被其他人知道,或是在发布软件之前没有删除,那么它就成了安全隐患。
|
存储 NoSQL 安全
Redis的两种持久化方式---RDB、AOF
通过本文的介绍,我们详细讲解了Redis的两种主要持久化方式:RDB和AOF。每种方式都有其独特的优缺点和适用场景。在实际应用中,可以根据具体需求选择合适的持久化方式,或者同时启用RDB和AOF,以达到最佳效果。希望本文能帮助您更好地理解和应用Redis的持久化机制,构建高效、可靠的数据存储解决方案。
1223 79
|
12月前
|
缓存 NoSQL API
什么是 Redis?为什么你应该关心它?
Redis 是一种基于内存的高性能数据存储工具,能有效缓解数据库压力,提升应用响应速度。它通过缓存常用数据、实时更新信息和管理排行榜等功能,帮助系统轻松应对高并发场景。本文以一家火爆的冰淇淋店为例,生动讲解了 Redis 的工作原理及其优势。无论你是开发者还是创业者,Redis 都是提升系统性能的绝佳选择。结合 Apipost 工具,还能更高效地构建 Redis 相关 API,让复杂任务变得简单快捷。
1820 17
|
SQL 关系型数据库 MySQL
如何实现 MySQL 的读写分离?
本文介绍了 MySQL 读写分离的实现方式及其主从复制原理,解释了如何通过主从架构提升读并发能力。重点分析了主从同步延时问题及解决方案,如半同步复制、并行复制等技术手段,并结合实际案例探讨了高并发场景下的优化策略。文章还提醒开发者在编写代码时需谨慎处理插入后立即查询的情况,避免因主从延时导致的数据不一致问题。
1366 44
如何实现 MySQL 的读写分离?
|
测试技术 数据处理 数据格式
Python中动态类和动态方法的创建与调用
【8月更文挑战第5天】在Python中,`type`函数可用于创建动态类,结合`types.MethodType`可创建动态方法。例如,定义`dynamic_method`后,可通过`type`创建包含该方法的`DynamicClass`。同样,对于已存在的类实例,可通过`types.MethodType`绑定新方法。这种动态特性适用于自动化测试框架或数据处理应用等场景,实现根据需求动态生成类及方法以执行特定逻辑。
325 7