@一贤不穿小鞋
1.循环结构
- 重复性做某件事叫循环结构.
- 如果重复性要做的事情没有终止条件就会一直执行下去就叫死循环,java中要避免死循环.
- 作用:简化代码,实现代码复用.
2.循环结构组成部分
- 循环初始条件:给循环的变量赋初值.
- 循环判断条件:给循环的变量写终止条件.
- 循环叠加条件:改变循环变量的值.
- 循环体:重复性要做的操作.
3.while循环
- 解决先判断后执行且重复次数不因定的重复性问题.
3.1:语法:循环初始条件;
while(循环判断条件){
循环体;
循环叠加条件;
}
3.2:执行流程:
- 先执行循环初始条件,再执行循环判断条件,如果循环的判断条件为false,就跳出循环结构,执行循环结构之后的语句;如果循环的判断条件为true,就执行循环体和循环叠加条件,再执行循环判断条件,重复蓝色字体部分.
3.3:while循环特点:
- while循环是先判断再执行的循环结构.
- 在while循环中,循环初始条件只执行一次且在循环开始前执行;循环判断条件可以执行1次到多次;循环体和循环叠加条件可以执行0次到多次.
eg:public static void main(String[] args){
//循环初始条件
int i=1;
//循环判断条件
while(i<=100){
//循环体
System.out.println("第"+i+"次:我要早起");
//循环叠加条件
i++;
}
}
- 题目:1.输出1-100之间的所有整数
2.输出100-1之间的所有整数
3.求1-100之间所有的整数的和
4.求1-100之间所有的偶数之和
5.求1-100之间所有能被3和7整除的所有数之和.
6.进行考试,问你考试是否合格,如果合格,就恭喜你,如果不合格,就进行考试,问你考试是否合格,如果合格,就恭喜你,如果不合格,就进行考试,问你考试是否合格,直到考试合格为止.
4.do-while循环
- 解决先无条件执行一次,再判断再执行的重复性问题.
4.1:语法:循环初始条件;
do{
循环体;
循环叠加条件;
}while(循环判断条件);
4.2:执行流程:
- 先执行循环初始条件,再执行循环体和循环叠加条件,再执行循环判断条件,
- 如果循环判断条件为false,就跳出循环结构,执行循环结构之后的语句;
- 如果循环判断条件为true,重复蓝色字体部分.
4.3:do-while循环结构特点
- 先无条件执行一次循环体,再判断再执行.
- 循环初始条件仅在循环开始时有且仅执行一次;循环体和循环叠加条件及循环判断条件可以执行1次到多次.
eg:public static void main(String[] args){
//第二步:获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
//循环初始条件
String answer="";
do{
//循环体
System.out.println("进行考试");
//循环叠加条件
System.out.println("考试是否合格?(y表示合格,其他表示不合格)");
answer=input.next();
//循环判断条件
}while(!answer.equals("y"));
System.out.println("恭喜你,考试合格");
}
- 题目:检查作用情况,看是否做完了,如果做完成了,老师奖励一朵小红花;如果没做完接着做,然后再检查作业情况,看是否做完了,如果做完成了,老师奖励一朵小红花,如果没做完接着做,直到做完为止。
5.for循环
- 解决先判断后执行且重复次数固定的重复性问题.
5.1:语法
- for(循环初始条件1;循环判断条件2;循环叠加条件3){
循环体;
}
5.2:执行流程
- 先执行循环初始条件1,再执行循环判断条件2,如果循环判断条件2为false,就跳出循环结构,执行循环结构之后语句;如果循环判断条件2为ture,就执行循环体和循环叠加条件3,重复蓝色字体部分。
5.3:for循环结构特点:
- for循环解决先判断后执行且循环次数固定的重复性问题。
- 在for循环结构中,循环初始条件1有且仅在第一次执行;循环判断条件2可以执行1次到多次;循环体和循环叠加条件3可以执行0次到多次。
- 在for循环结构中,小括号中两个分号是必须的,一定不能省略。
- 在for循环结构中,循环初始条件1不可以直接省略,但是省略后,可以在for循环结构前面声明也可以;
循环判断条件2可以直接省略,只是省略后变成死循环;
循环叠加条件3可以直接省略,只是省略后变成死循环,如果不想变成死循环,可以循环叠加条件3写在循环体后面。 - 在for循环结构中,循环初始条件1可以是一个式子,也可以是多个式子,式子间要用逗号隔开;
循环判断条件2必要得到一个boolean类型的结果,至于循环判断条件2的式子可以是一个也可以多个式子通过逻辑运算符连接起来;
循环叠加条件3可以是一到多个式子,只要式子之间用逗号分隔开。
eg:public static void main(String[] args){
for(int i=1;i<=100;i++){
System.out.println("第"+i+"次:我一定会早起");
}
}
for(int i=1,j=6;i<=6&&j>=1;i++,j++){
System.out.println(i+"+"+j+"="+(i+j));
}
}
- 题目:1.打印
1+6=7
2+5=7
3+4=7
4+3=7
5+2=7
6+1=7
2.求1-100之间所有的偶数之和
3.求1-100之间所有能被3和7整除的所有数之和.
4.我们有一个梦想,成为千万富翁,为了实现这个梦想,我们打算每个月存3000元,请 问多少个月后可以实现梦想?
5.我们有一个梦想,成为千万富翁,为了实现这个梦想,我们打算第一个月存3000元, 后面每个月比上个月多存1000元,请 问多少个月后可以实现梦想?
6.for ,while,do-while
- for循环解决先判断后执行且重复次数固定的重复性问题.
- while循环解决先判断后执行且重复次数不固定的重复性问题.
- do-while循环解决先无条件执行一次要重复的操作,再判断再执行的重复性问题.
- 能用do-while循环解决的问题,都可以用for循环和while循环结构解决.
- 能用for循环和while循环解决的问题不一定可以用do-while循环结构解决.
- 能用for循环解决的问题一定可以用while循环解决的.
- 能用while循环解决的问题一定可以用for循环解决的.
7.嵌套循环结构
- 在一个循环结构的大括号中完整包含另一个循环结构就是嵌套循环结构.
7.1:循环结构之间可以随意嵌套,嵌套要正确.
7.2:循环结构间可以嵌套多层,一般情况两层嵌套.
7.3:在嵌套循环结构中,外层循环一次,内层循环要头循环完.
- 题目:
1.从键盘上接收一个班4名学员的成绩.
2.从键盘上接收三个班各4名学员的成绩.
eg:public static void main(String[] args){
//获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
//接收三个班
for(int j=1;j<=3;j++){
System.out.println("请输入第"+j+"个班的学员成绩:");
//接收一个班4名学员的成绩
for(int i=1;i<=4;i++){
System.out.println("请输入第"+i+"名学员的成绩:");
double score=input.nextDouble();
}
}
}
8.break
- 跳出结构,只能用在switch和循环结构中.
8.1:break用在switch结构中,跳出switch结构.
- break用在循环结构中,跳出当前循环结构.
eg: public static void main(String[] args) {
//获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
for (int i = 1; i <=3; i++) {
System.out.println("第"+i+"个班的成绩:");
for (int j = 1; j <=4; j++) {
System.out.println("请输入第"+j+"个学员的成绩:");
double score=input.nextDouble();
//如果成绩录入错误
if (score>100||score<0) {
break;//跳出内层循环结构
}
}
System.out.println();
}
}
8.2:(扩展)break作标记,可以跳出指定标记的循环结构.
- 语法:标记名:循环结构
break 标记名;
eg:public static void main(String[] args) {
//获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
a:for (int i = 1; i <=3; i++) {
System.out.println("第"+i+"个班的成绩:");
for (int j = 1; j <=4; j++) {
System.out.println("请输入第"+j+"个学员的成绩:");
double score=input.nextDouble();
//如果成绩录入错误
if (score>100||score<0) {
break a;//跳出指定标记的循环结构(即跳出外层循环结构)
}
}
System.out.println();
}
}
9.(了解)continue
- 只能用在循环结构.作用:结束当次循环,进入下一次循环.
eg: public static void main(String[] args) {
//获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
for (int i = 1; i <=3; i++) {
System.out.println("第"+i+"个班的成绩:");
for (int j = 1; j <=4; j++) {
System.out.println("请输入第"+j+"个学员的成绩:");
double score=input.nextDouble();
//如果成绩录入错误
if (score>100||score<0) {
continue;//结束本次循环,进入下一次循环
}
System.out.println("请继续录入");
// if (score>=0&&score<=100) {
// System.out.println("请继续录入");
// }
}
System.out.println();
}
}
总结
1.循环结构定义和作用.
2.while循环
3.do-while循环
4.for循环
5.三种循环区别
6.嵌套循环结构