嵌套循环和方法

1. 嵌套循环
嵌套循环
为了让大家能够更好的理解循环嵌套之后的一个操作,后期代码中,一些算法中,都会使用到嵌套循环。
以下练习题我们需要学会推导过程!!!

/*				L  *
    *           1  1
    **          2  2
    ***         3  3 
    ****        4  4
    *****       5  5
    ******      6  6
*/
class Demo2 {
	public static void main(String[] args) {
		int line = 30;
		// 外层循环控制总计6行
		for (int i = 1; i <= line; i++) {
			// 每一行星星个数 == 行号
			for (int j = 1; j <= i; j++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
	}
}
/*              L  _  *  
     *          1  5  1
    ***         2  4  3
   *****        3  3  5
  *******       4  2  7
 *********      5  1  9 
***********     6  0  11
				
				_ = 总行数 - 当前行号;
				* = 2 * 当前行号 - 1;
*/
class Demo4 {
	public static void main(String[] args) {
		int line = 20;
		// 外层循环控制总行数,这里是6行
		for (int i = 1; i <= line; i++) {
			// 内层循环1:控制空格的个数
			for (int j = 1; j <= line - i; j++) {
				System.out.print(' ');
			}
			
			// 内层循环2:控制星星的个数 星星 = 2 * 当前行号 - 1;
			for (int k = 1; k <= 2 * i - 1; k++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
	}
}
/*				L  _  *
     *			1  5  1	
    ***			2  4  3
   *****		3  3  5
  *******		4  2  7
 *********		5  1  9
***********		6  0  11

 *********      1  1  9
  *******       2  2  7 
   *****       	3  3  5
    ***			4  4  3
     * 			5  5  1
	 
				下半部分 第一行星星个数为9,如何计算得来
				凑!!!
				总行数5
					5 * 2 - (i * 2 - 1) --> 5 * 2 - i * 2 + 1 => (5 - i) * 2 + 1
					(5 - i) * 2 + 1
					10 - 1 = 9;
					10 - 3 = 7;
					10 - 5 = 5;
*/
class Demo6 {
	public static void main(String[] args) {
		// 菱形总行数 ,一旦是单数
		int line = 25;
		
		// 图形一分为二,上半部分为line / 2 + 1行
		// 外层循环控制总行数,这里是line / 2 + 1行
		for (int i = 1; i <= line / 2 + 1; i++) {
			// 内层循环1:控制空格的个数
			for (int j = 1; j <= line / 2 + 1 - i; j++) {
				System.out.print(' ');
			}
			
			// 内层循环2:控制星星的个数 星星 = 2 * 当前行号 - 1;
			for (int k = 1; k <= 2 * i - 1; k++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
		
		// 下半部分一共line / 2行
		// 外层循环控制总行数,总计line / 2行
		for (int i = 1; i <= line / 2; i++) {
			// 内层循环1: 展示空格个数
			for (int j = 1; j <= i; j++) {
				System.out.print(' ');
			}
			
			// 内层循环2: 控制星星的个数
			for (int k = 1; k <= (line / 2 - i) * 2 + 1; k++) {
				System.out.print('*');
			}
			
			System.out.println();
		}
	}
}

2. 方法【重点】

2.1 为什么使用方法
生活中使用的工具,螺丝刀,锤子,扳手。
1. 复用,重复使用
2. 提高效率

开发中,存在代码需要复用的情况。虽然循环可以解决一部分代码复用的问题,但是无法从根本上解决需要多处使用的情况。
这里需要用到方法
代码中使用循环解决复用的问题
	1. 代码冗余!!!
	2. 维护性极差!!!
	3. 阅读性极差!!!

2.2 方法格式

// main方法 Java中主方法格式
 public static void main(String[] args) {}
/*


public static : 不要问!!!固定格式

void: 返回值类型 void 表示当前方法没有返回值
返回值类型是当前方法运行完成之后对方法外的一个返回数据

main: 方法名,方法名是一个名字,要求符合命名规范
小驼峰命名法,见名知意,动宾结构

(形式参数列表): 当前方法运行所需的外来数据,这里需要告知调用者数据类型

{}: 方法体

方法格式:

public static 返回值类型 方法名(形式参数列表) {
 方法体
 }
/**
* 文档注释
*		1. 对于方法的功能解释
*		2. 方法所需参数介绍
*		3. 方法返回值类型介绍和含义
*		4. 方法处理过程中出现的异常
*/

/**
* 展示打印到控制台一个Hello World
*/
public static void printHelloWorld() {
    // 方法体
    System.out.println("Hello World");
}

2.3 自定义方法小总结

  1. 目前我们有且只考虑在main方法中来调用其他方法
  2. main方法是目前我们现在程序的唯一入门,如果想要哪一个代码执行,哪一个方法被调用,都需要经过main方法完成
  3. 方法书写一定要注意代码格式
  4. 方法位置在class以内,其他方法之外