嵌套循环和方法
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 自定义方法小总结
- 目前我们有且只考虑在main方法中来调用其他方法
- main方法是目前我们现在程序的唯一入门,如果想要哪一个代码执行,哪一个方法被调用,都需要经过main方法完成
- 方法书写一定要注意代码格式
- 方法位置在class以内,其他方法之外