嵌套循环是一个很重要的循环格式。特别是对于后期的数组,排序,链表等等内容都有着直接的关系,所以这里必须要学明白,我们使用打印型号的方式来练习它。一定要熟练掌握。
外层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循环嵌套学习的必要性:
- 提高编程技能:掌握for循环嵌套可以让我们编写出更复杂的程序,实现更高级的功能。这是提高编程技能的一个重要步骤。
- 处理多维数据结构:在实际编程中,我们经常需要处理多维数据结构,比如图像处理中的像素矩阵、游戏中的二维地图等。通过for循环嵌套,我们可以方便地遍历这些数据结构中的每个元素,进行各种操作。
- 优化算法性能:通过合理使用for循环嵌套,我们可以优化算法的性能。例如,在排序、搜索等算法中,使用嵌套循环可以降低时间复杂度,提高程序的执行效率。
- 解决实际问题:许多实际问题需要用到for循环嵌套来解决,比如打印乘法口诀表、生成杨辉三角等。掌握for循环嵌套可以帮助我们更好地解决这类问题。
- 增强逻辑思维能力:学习for循环嵌套需要理解循环的嵌套关系和执行顺序,这有助于增强我们的逻辑思维能力和空间想象力。
总之,学习Java的for循环嵌套是非常有必要的,它可以帮助我们提高编程技能、处理多维数据结构、优化算法性能、解决实际问题以及增强逻辑思维能力。