Day 7 嵌套循环和方法
1. 嵌套循环
作用:
为了让大家能够更好的理解循环嵌套之后的操作,在后期开发中,一些算法都会用到嵌套循环
重点:
学会推导过程
class Demo1 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i += 1) {
for (int j = 1; j <= 5; j += 1) {
System.out.print("* ");
}
System.out.println();
}
}
}
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();
}
}
}
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();
}
}
}
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();
}
}
}
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 方法分析过程
class Method1 {
public static void main(String[] args) {
printHelloWorld();
}
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 方法练习
class Method2 {
public static void main(String[] args) {
BBQ();
}
public static void BBQ() {
for (int i = 1; i <= 10; i += 1) {
System.out.println("烤羊肉串。");
}
}
}
2.5 有参数无返回值的方法
class Method3 {
public static void main(String[] args) {
printIntNumber(10);
}
public static void printIntNumber(int num) {
System.out.println(num);
}
}
文档注释细节:
1. @param num 告知编译器,这里在解释方法参数num
2. 方法功能概述和之后的参数解释,返回值解释需要空一行
3. 文档注释可以让我们更好的阅读代码
调用带有参数的方法注意事项:
1. 方法如果要参数,必须在调用中给予对应的参数
2. 方法如果没有给定参数,报错,编译不通过
3. 方法如果给定的实际参数,数据类型不符合要求的,报错,数据类型一致化问题
4. 如果在调用过程中给定参数个数不是方法预期的个数,报错,编译不通过
class Method4 {
public static void main(String[] args) {
printPic(13);
}
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 就是当前方法所需的实际参数,符合方法要求的类型