Day 7 嵌套循环和方法

这篇博客详细介绍了Java中的嵌套循环和方法的使用。首先讲解了嵌套循环的概念,接着重点探讨了方法的运用,包括为何使用方法、如何通过模仿实现方法、自定义方法的步骤和实践,以及有参数无返回值的方法和形式参数与实际参数的区别。

Day 7 嵌套循环和方法

1. 嵌套循环
作用:
	为了让大家能够更好的理解循环嵌套之后的操作,在后期开发中,一些算法都会用到嵌套循环

重点:
    学会推导过程
        
/*
展示如下图形
*****
*****
*****
*****
*****

推导:
	5行,每行输出5个 * ,
*/
class Demo1 {
    public static void main(String[] args) {   
        // 定义行数
	for (int i = 1; i <= 5; i += 1) {
            // 定义输出个数循环,每一行输出5个 * 
	    for (int j = 1; j <= 5; j += 1) {
		System.out.print("* ");
	    }
            // 换行
	    System.out.println();
	}
    }
}


/*
*
**
***
****
*****

推导:
	用 i 表示行数,第 i 行有 i 个 *
	用 j 表示输出个数循环,每行 j 从 1 到 i 变化,所以判断条件为 j <= i
*/
class Demo2 {
    public static void main(String[] args) {
	int line = 5;
	for (int i = 1; i <= line; i += 1) {
	    for (int j = 1; j <= i; j += 1) {
		System.out.print("* ");
	    }
	    System.out.println();
	}
    }
}


/*
    *
   **
  ***
 ****
*****

推导:
	每行符号总数为 5 = 空格数 + * 的个数
	空格数 = 5 - 当前行数
	* 的个数 = 当前行数
	这里需要用到三个循环变量: 行数 i;空格数 j;* 的个数 k
*/
class Demo3 {
    public static void main(String[] args) {
	int line = 12;
	for (int i = 1; i <= line; i += 1) {
			
	    for (int j = 1; j <= line - i; j += 1) {
		System.out.print(" ");
	    }
	    for (int k = 1; k <= i; k += 1) {
		System.out.print("*");
	    }
	    System.out.println();
	}
    }
}


/*
     *
    ***
   *****
  *******
 *********
 
 推导:
	行总数为 5 
	空格数 = 5 - 当前行数
	* 的个数 = 当前行数 * 2 - 1
	这里依旧需要用到三个循环变量: 行数 i;空格数 j;* 的个数 k
*/
class Demo4 {
    public static void main(String[] args) {
	int line = 5;
	for (int i = 1; i <= line; i += 1) {
	    for (int j = 1; j <= line - i; j += 1) {
		System.out.print(" ");
	    }
	    for (int k = 1; k <= 2 * i - 1; k += 1) {
		System.out.print("*");
	    }
	    System.out.println();
	}
    }
}


/*
     A
    BBB
   CCCCC
  DDDDDDD
 EEEEEEEEE
FFFFFFFFFFF
*/
class Demo5 {
    public static void main(String[] args) {
	char ch = 'A';
	int line = 6;
	for (int i = 1; i <= line; i++) {
	    for (int j = 1; j <= line - i; j ++) {
		System.out.print(" ");
	    }
	    for (int k = 1; k <= 2 * i - 1; k++) {
		System.out.print(ch);
	    }
	    System.out.println();
	    ch += 1;
	}
    }
}


/*
    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
	
	拆开来做
*/
class Demo6 {
    public static void main(String[] args) {
	// 上半部分
	int line = 9;
	for (int i = 1; i <= line / 2 + 1; i += 1) {
	    for (int j = 1; j <= line / 2 + 1 - i; j += 1) {
		System.out.print(" ");
	    }
	    for (int k = 1; k <= 2 * i - 1; k += 1) {
		System.out.print("*");
	    }
	    System.out.println();
	}
	// 下半部分
	for (int i = 1; i <= line / 2; i += 1) {
	    for (int j = 1; j <= i; j += 1) {
		System.out.print(" ");
	     }
	    for (int k = 1; k <= (line / 2 - i) * 2 + 1; k++) {
		System.out.print("*");
	    }
		System.out.println();
	}
    }
}
2. 方法
2.1 为什么要使用方法
对于某些代码块的复用;提高效率
在开发中,存在代码需要复用的情况,虽然循环解决一些代码复用的问题,但无法从根本上解决复用的问题,所以我们要用到方法

代码中使用循环解决复用的问题:
	1. 代码冗余
	2. 维护性差
	3. 阅读性差
2.2 比葫芦画瓢
main方法:
	public static void main(String[] args) {
	
	}
	
	public static:固定格式
	void:返回值类型,void表示当前没有返回值
		  返回值类型是当前方法运行完成之后,对方法外的一个返回数据
	main:方法名,是一个名字,要求符合命名规范
		  小驼峰命名法
	(  ):形式参数列表,表示当前方法运行所需的外来数据,告知调用者数据类型
	{  }:方法体
	
方法格式:
	public static 返回值类型 方法名(形式参数列表) {
		方法体
	}
英文格式:
	public static returnType methodName(Arguments) {
		Method Body
	}
2.3 第一次自定义实现方法
2.3.1 方法分析过程
/*
使用方法展示一个Hello World

方法分析:
	固定格式:
		public static
	返回值类型:
		这里需要展示一个Hello World,没有返回值,采用void
	方法名:
		printHelloWorld
		见名知义,动宾结构,小驼峰命名法
	形式参数列表:
		当前方法没有任何的外来数据需求,不需要参数
	【方法声明】
		public static void printHelloWorld()
*/

class Method1 {
    public static void main(String[] args) {
	// 方法是条狗,哪里需要哪里吼
	// 调用方法一定要有小括号,如果没有参数,小括号没有内容
	printHelloWorld();
    }
	
	/**
	* 展示打印到控制台一个Hello World
	*/
    public static void printHelloWorld() {
	// 方法体
	System.out.print("Hello World");
    }
}
2.3.2 方法实现过程
文档注释格式:
/**
*
*
*/
注释内容:
	1. 对方法的功能注释
	2. 方法所需参数介绍
	3. 方法返回值类型介绍和含义
	4. 方法处理过程中出现的异常
2.3.3 方法在代码中实现的位置
存放的位置:
	1. class大括号以内【目前的要求】
	2. 其他方法之内
2.3.4 方法自定义调用过程
记住一句话:
	方法是条狗,哪里需要哪里吼

	1. 在需要调用方法的位置,使用方法名词调用
	2. 方法和变量的最大区别
		方法后面一定有小括号!!!
2.3.5 自定义方法小总结
1. 目前有且值考虑在main方法中来调用其他方法
2. main方法是目前程序的唯一入口,如果需要哪一个代码执行,哪一个方法被调用,都需要经过main方法来完成
3. 要注意书写格式
4. 方法位置在class以内,其他方法之外
2.4 方法练习
/*
无形式参数无返回值类型的方法
需求:在控制台展示10个烤羊排

方法分析:
	固定格式:
		public static
	返回值类型:
		在控制台展示,这里不需要返回值
	方法名:
		BBQ
	形式草书内容:
		当前方法没有一个对于外来数据的需求
		()没有需求
*/
class Method2 {
    public static void main(String[] args) {
	// 方法调用一定要有小括号
	BBQ();
    }  
    /**
    * 在控制台展示10个烤羊排
    */
    public static void BBQ() {
	for (int i = 1; i <= 10; i += 1) {
	    System.out.println("烤羊肉串。");
	}
    }
}
2.5 有参数无返回值的方法
/*
有参数无返回值方法演示
需求:展示用户已知的int类型,用户打印该方法,传入一个int类型数据,在控制台打印展示int类型数据

方法分析:
	固定格式:
		public static
	返回值类型:
		打印展示一个int类型数据,不需要返回值,用void
	方法名:
		printIntNumbei
	形式参数列表:
		该方法展示的数据为用户传入的int类型
		(int num)
		int 是参数的数据类型
		num 参数的名字,可以认为是方法中的一个变量,可供方法使用
	【方法声明】
		public static void printIntNumber(int num)
*/
class Method3 {
    public static void main(String[] args) {
		
	// 当前方法需要参数,这里调用时调用者必须给他参数
	printIntNumber(10);
    }
	
    /**
    * 展示用户传入的int类型数据
    *
    * @param num 这里需要一个int类型数据
    */
    public static void printIntNumber(int num) {
	System.out.println(num);
    }
}


文档注释细节:
    1. @param num 告知编译器,这里在解释方法参数num
    2. 方法功能概述和之后的参数解释,返回值解释需要空一行
    3. 文档注释可以让我们更好的阅读代码
    
调用带有参数的方法注意事项:
    1. 方法如果要参数,必须在调用中给予对应的参数
    2. 方法如果没有给定参数,报错,编译不通过
    3. 方法如果给定的实际参数,数据类型不符合要求的,报错,数据类型一致化问题
    4. 如果在调用过程中给定参数个数不是方法预期的个数,报错,编译不通过
    
/*
     A
    BBB
   CCCCC
  DDDDDDD
 EEEEEEEEE
FFFFFFFFFFF
	
	这里需要一个方法,封装这样的实现效果
	
	固定格式:
		public static
	返回值类型:
		这里就是展示图形,不需要返回值
	方法名:
		printPic
	形式参数列表:
		图形最重要的就是有多少行数
		需要给用户一个控制方法的途径
		(int line)
*/
class Method4 {
    public static void main(String[] args) {
	printPic(13);
    }
    /**
    * 展示一个等腰字符图形
    *
    * @param line 控制图形展示的行数
    */
    public static void printPic(int line) {
	char ch = 'A';
	for (int i = 1; i <= line; i++) {
	    for (int j = 1; j <= line - i; j ++) {
		System.out.print(" ");
	    }
	    for (int k = 1; k <= 2 * i - 1; k++) {	
		System.out.print(ch);
	    }
	    System.out.println();
	    ch += 1;
	}
    }
}
2.6 形式参数和实际参数
形式参数:
	public static void printIntNumber(int num)
    int num 是为了告诉调用者,需要一个int类型数据,在这是个形式参数
    
实际参数:
    printIntNumber(10)
    10 就是当前方法所需的实际参数,符合方法要求的类型
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值