Day04补充笔记
课程内容
1、循环内容的补充
2、方法
循环内容补充
嵌套循环
1、在外层循环中,循环体又是一个比较复杂的操作,所以外层循环里面又包含了循环,被包含的循环,就称为内层循环。
2、格式:
for (初始化表达式1; 循环条件1;初始化变量1的自增) {
for(初始化表达式2; 循环条件2;初始化变量2的自增) {
循环体;
}
}
3、执行流程:
1、初始化表达式1
2、计算循环条件1,如果为false,外层循环就结束了;如果为true,执行第3步
3、初始化表达式2
4、计算循环条件2,如果为false,内层循环就结束了,执行初始化变量1的自增,回到第2步;如果为true,执行第5步
5、执行内层循环的循环体语句,执行初始化变量2的自增,回到第4步
代码示例
class Demo01_嵌套循环 {
public static void main(String[] args) {
for(int i = 1; i <= 3; i++) {
for (int j = 1; j <= 5; j++) {
System.out.println("i=" + i + ", j=" + j);
}
}
}
}
练习
打印99乘法表
代码示例
class Demo02_99乘法表 {
/*
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
.......
9*1=9 9*2=18 ............ 9*9=81
*
**
***
****
*/
public static void main(String[] args) {
for (int i = 1; i <= 20; i++) {
//打印i个星星
for (int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + i * j + " ");
}
//换行
System.out.println();
}
}
}
while循环
1、格式:
初始化语句;
while(循环条件) {
循环体;
初始化变量的自增;
}
2、执行流程:
1、初始化语句;
2、判断循环条件,如果为false,就while语句结束
3、如果循环条件为true,就执行循环体,执行初始化变量的自增,回到第2步
3、注意事项:
1、循环条件之后,左大括号之前,不要加分号
2、循环条件必须是计算结果为boolean类型的表达式
3、初始化变量的自增:很容易忘记,需要注意
代码示例
class Demo03_while语句 {
public static void main(String[] args) {
//初始化语句
int i = 1;
//while语句,控制循环次数为5
while(i <= 5) {
System.out.println("Hello World!");
//初始化变量的自增
i++;
}
}
}
练习
使用while语句,统计水仙花数的个数
代码示例
class Demo04_while语句练习水仙花数 {
//使用while语句,统计水仙花数个数
public static void main(String[] args) {
//初始化语句
int num = 100;
//计数器
int count = 0;
while (num <= 999) {
int ge = num % 10;
int shi = num / 10 % 10;
int bai = num / 100;
if (ge*ge*ge + shi*shi*shi + bai*bai*bai == num) {
count++;
}
//初始化变量的自增
num++;
}
System.out.println(count);
}
}
do...while循环
1、格式:
初始化语句;
do {
循环体语句;
初始化变量的自增;
} while(循环条件表达式);
2、执行流程:
1、初始化语句
2、循环体语句、初始化变量的自增
3、计算循环条件表达式,如果为false,do...while语句就结束了;如果为true,回到第2步
3、注意事项:
1、无论循环条件表达式计算结果如何,都至少会执行一次循环体语句(循环条件,只能控制从第二次开始的循环体)
2、最后又一个分号,用于表示语句结束
代码示例
class Demo05_dowhile {
public static void main(String[] args) {
int i = 1;
do {
System.out.println("Hello World!");
i++;
} while(i <= 5);
}
}
三种循环语句的比较
1、do...while循环和其他两种循环的区别
do...while至少会执行一次循环体
其他两种循环,如果循环条件第一次计算就为false,循环体语句就一次都执行不了
2、while语句和for语句的区别:
1、代码层面:声明的初始化变量的作用域,while语句的初始化变量,声明在while语句的外面,所以在while语句结束之后,变量可以继续使用;for语句初始化变量声明在for语句的里面,所以for语句结束之后,这个变量就消失了。
2、设计层面:for语句一般用在循环次数比较明确的场景下;循环范围比较明确,次数不是很明确的时候,使用while语句相对多。
代码示例
class Demo06_三种循环的特点 {
public static void main(String[] args) {
int x;
for (int i = 1; i <= 100; i++) {
x = i;
}
//System.out.println(x);编译报错,循环体可能一次都不执行
int y;
int j = 1;
do {
y = j;
j++;
} while (j <= 100);
System.out.println(y);
for(int i = 1; i <= 5; i++) {
System.out.println("HelloWorld");
}
//System.out.println(i);编译报错,i的作用域已经结束
int i = 1;
while(i <= 5) {
System.out.println("HelloWorld");
i++;
}
System.out.println(i);
}
}
死循环
1、定义:无限循环,循环体可以无限的循环下去,永不结束。
2、格式:
1、for语句的死循环:
for (;;) {
循环体语句;
}
2、while语句的死循环【常用】
while(true) {
循环体语句;
}
3、作用:
1、有时候,在写代码编译阶段,不太清楚循环什么时候结束,只有到了运行阶段,才能清楚什么时候会结束,所以只能写成死循环,还有一些循环跳转语句,可以在循环体内部结束当前循环。
2、在设计服务端程序时,就希望能够永远给用户提供服务,无论用户访问多少次服务,都能够运行正常的代码逻辑,所以在服务端开发中,就是使用死循环来完成这样的需求。
代码示例
import java.util.Scanner;
class Demo07_死循环 {
public static void main(String[] args) {
for (;;) {
System.out.println("Hello World!");
}
//System.out.println("执行结束");编译报错,无法访问该语句
while(true) {
System.out.println("HelloWorld");
}
//System.out.println("执行结束");//无法访问的语句,所以编译报错
//键盘录入一个数字,如果为0,那么就结束录入
Scanner sc = new Scanner(System.in);
System.out.println("请录入若干数字,如果录入0表示录入结束");
while(true) {
int x = sc.nextInt();
if (x == 0) {
System.out.println("谢谢使用本系统");
break;
}
System.out.println("您录入的数据为:" + x);
}
}
}
跳转语句
1、在循环过程中,需要在循环体中,来控制循环的结束、跳转
2、continue:继续
结束本次循环,继续下次循环
3、break:结束、破坏
结束当前循环
4、return:返回,返回当前方法(结束当前方法)
结束当前方法
5、System.exit(0):结束虚拟机
代码示例
class Demo08_跳转语句 {
public static void main(String[] args) {
//打印7次ujiuye
for (int i = 1; i <= 10; i++) {
if ( i % 3 == 0) {
continue;
}
System.out.println("ujiuye");
}
//打印2次ujiuye,打印欢迎下次光临
for (int i = 1; i <= 10; i++) {
if ( i % 3 == 0) {
break;
}
System.out.println("ujiuye");
}
System.out.println("欢迎下次光临");
//输出两次ujiuye,不输出欢迎下次光临
for (int i = 1; i <= 10; i++) {
if(i % 3 == 0) {
return;
}
System.out.println("ujiuye");
}
System.out.println("欢迎下次光临");
}
}