1.循环结构:重复性做某件事。
1.1:循环结构作用:减化代码。
2.循环结构组成部分
2.1:循环初始值(初始化语句):开始执行循环的初值。
2.2:循环条件(判断条件):满足条件就执行循环,不满足就跳出循环。
2.3:循环叠加(循环控制语句):改变循环的条件值。
2.4:循环体:要重复做的事。
注意:变量在那个结构中声明,它就只能在声明的结构的大括号中使用,跳出这个大括号,变 量就无用。
3.for循环:先判断后执行的,循环次数固定的重复性问题
3.1:for(初始化语句1;判断条件2;循环控制语句3){
循环体;
}
3.2:执行流程:先执行初始化语句1,再判断判断条件2,如果判断条件2为false,就跳出循环结 构,执行循环之后的语句;如果判断条件2为true,就执行循环体,再执行循 环控制语句3,再判断判断条件2,如果判断条件2为false,就跳出循环结 构,执行循环之后的语句;如果循判断条件2为true,就执行循环体, 再执行循环控制语句3,重复蓝色字体部分。
3.3:执行特点:
3.3.1:在for循环结构中,循环初始值1只在第一次执行,只执行一次;
循环条件2每次循环都要执行一次,至少执行一次;
循环叠加3在第二次循环时开始执行,至少执行0次;
循环体至少执行0次。
3.3.2:在for循环结构中的小括号中,两个分号一定不可以省略。
3.3.3:for循环的循环初始值1不能直接省略,如果省略了,可以在写在for循环之前。
循环条件2可以省略,省略后变成死循环;
循环叠加3可以省略,直接省略后变成死循环,如果不想变成死循环,循环叠加3 可以写在循环体后面。
3.3.4:for循环中,初始化语句1和循环控制语句3的条件可以由一到多个式子组成,式子 之间用逗号分隔;判断条件2可以一到多个式子组成,式子之间用逻辑运算 符。
eg:public static void main(String[] args){
for(int i=1;i<=10;i++){
System.out.println("第"+i+"次:我明天一定会早起");
}
}
public static void main(String[] args){
for(int i=1,j=10;i<=10&&j>=1;i++,j--){
System.out.println("i+j="+(i+j));
}
}
4.while循环:解决先判断后执行并且循环次数不因定的重复性问题。
4.1:语法: 循环初始化语句1;
while(循环判断条件){
循环体;
循环叠加;
}
4.2:执行流程:先执行初始语句,再执行循环判断条件,如果判断条件为false,就跳出循环 结构,执行后面的代码;如果判断条件为true,就执行循环体和循环叠加, 重复蓝色字体部分。
4.3:执行特点:
4.3.1:循环的初始化语句只在第一次执行,只执行一次;
循环的判断条件每次都会执行,至少执行一次。
循环体和循环叠加至少执行0次。
eg:public static void main(String[] args){
//循环初始语句
int i=1;
//判断条件
while(i<=10){
//循环体
System.out.println(i+"我一定要早起");
//循环叠加
i++;
}
}
5.do-while:解决先无条件执行一次循环体,再判断再执行的重复性的问题。
5.1:语法:初始化语句;
do{
循环体;
循环叠加;
}while(判断条件);
5.2:执行流程:先执行循环的初始化语句,再执行循环体和循环叠加,再判断循环判断条件如果判断条件为false,就跳出循环结构,执行后面代码;如果判断条件为true,就执行循环体和循环叠加,重复蓝色字体部分。
5.3:执行特点:
5.3.1:循环的初始化语句只执行一次;循环体和循环叠加至少执行一次;判断条件至少执行一次。
eg:public static void main(String[] args){
//获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
String answer="";
do{
//循环体
System.out.println("默写Java语法");
//循环叠加
System.out.println("是否默写合格?(y/n)");
answer=input.next();
}while(!answer.equals("y"));
}
6.for vs while vs do-while
6.1:相同点:
6.1.1:都是用来解决重复性问题
6.1.2:都有循环结构的四要素组成
6.2:不同点:
6.2.1:应用场景不同:for循环一般用来解决先判断后执行并且循环次数固定的问题;
while循环一般用来解决先判断后执行并且循环次数不固定的问题;
do-while循环一般用来解决先无条件执行一次,再判断再执行的重复问题;
6.2.2:替换性不同:
能用for循环解决的问题,也可以用while循环解决,不一定能用能用do-while;
能用while循环解决的问题,也可以用for循环解决,不一定能用能用do-while;
能用do-while循环解决的问题,都可以用for循环或while循环解决;
7.嵌套循环结构:将一个循环结构写在另一个循环结构的循环体中。
所有的循环结构之间都可以相互嵌套,嵌套要正确。
循环结构之间可以多层嵌套,一般常用2,3层嵌套.
嵌套循环结构执行特点:外层循环执行一次,内层循环从头执行到尾。
题目:请从键盘上接收三个班各四名学员的Java成绩
分解题目:先从键盘上接收一个班四名学员的Java成绩
再接收三个班的成绩
eg:public static void main(String[] args){
//获得具有从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
//外层循环控制班级
for(int j=1;j<=3;j++){
System.out.println("\n请输入第"+j+"班的成绩:");
//请从键盘上接收一个班四名学员的Java成绩
for(int i=1;i<=4;i++){
System.out.println("请输入第"+i+"名学员的Java成绩:");
double score=input.nextDouble();
}
}
}
8.Java中break,continue,return
8.1:break:只能用switch结构或者循环结构中,跳出结构。
8.1.1:break用在switch结构中,跳出switch结构。
8.1.2:break用在循环结构,跳出当前循环结构。
eg:public static void main(String[] args){
//获得具有从键盘上接收数的能力
Scanner input=new Scanner(System.in);
//外层循环控制班级
for(int j=1;j<=3;j++){
System.out.println("请输入第"+j+"班的成绩:");
//内层循环控制每个班学员成绩
for(int i=1;i<=4;i++){
System.out.println("请输入第"+i+"名学员的成绩:");
double score=input.nextDouble();
if(score>100||score<0){
break;//跳出内层循环结构
}
}
}
}
8.3.3:(扩展)break标签的使用:跳出指定标签的结构
语法:标签名:循环结构
break 标签名;
eg:public static void main(String[] args){
//获得具有从键盘上接收数的能力
Scanner input=new Scanner(System.in);
//外层循环控制班级
a:for(int j=1;j<=3;j++){
System.out.println("请输入第"+j+"班的成绩:");
//内层循环控制每个班学员成绩
for(int i=1;i<=4;i++){
System.out.println("请输入第"+i+"名学员的成绩:");
double score=input.nextDouble();
if(score>100||score<0){
break a;//跳出标签名指定循环结构
}
}
}
}
8.2:continue:只能用在循环结构中,结束本次循环,进入下一次循环。
eg:public static void main(String[] args){
//获得具有从键盘上接收数的能力
Scanner input=new Scanner(System.in);
for(int i=1;i<=4;i++){
System.out.println("请输入第"+i+"名学员的成绩:");
double score=input.nextDouble();
if(score>100||score<0){
continue;//结束本次循环,进入下一次循环
}
System.out.println("成绩:"+score);
}
}
8.3:return:只能用在方法中,结束方法;结束方法的同时返回一个值。
9.扩展:生成随机数
9.1:生成min-max随机数包括min和max的公式:
int num=(int)(Math.random()*(max-min+1)+min);
eg://生成[0,1)之间随机数
double num1=Math.random();
//生成[0,10]之间随机整数
int num2=(int)(Math.random()*11);
//生成两位随机整数[10,99] 10<=r<100
int num3=(int)(Math.random()*90+10);