循环结构:
1.while循环
2.do-while循环
3.for循环
4、循环嵌套
1.while循环(当型)
语法格式:
while()小括号后面不能加;号,会进入死循环;
n的值也必须改变,否则也会进入死循环(因为判断条件一直成立)
while循环的执行流程:
while小括号里面判断条件的值为true,则执行大括号内的循环体语句,然后再执行判断条件,
判断条件是否成立(true or false),如果不成立循环才终止。
while循环案例1:计算1+3+5+7+9+15的和
package com.demo.day2.flow;
public class PlusDemo {
public static void main(String[] args) {
// 计算1+3+5+7+9+11+13+15的和
int n=1;
int sum=0;//用来存放累加和
while(n<=15) {
sum+=n;
n=n+2;
}
System.out.println("累加的结果为:"+sum);
}
}
输出结果
累加的结果为:64
while循环案例2:循环输出26个字母,两行输出
com.demo.day2.flow;
public class CharDemo {
public static void main(String[] args) {
// 循环输出26个字母,换两行输出
char ch='a';
int count=1;//用来换行
while(ch<='z') {
//单行输出
System.out.print(ch+" ");
if(count%13==0) {
System.out.println();//换行
}
ch++;
count++;
}
}
}
输出结果:
a b c d e f g h i j k l m
n o p q r s t u v w x y z
2.do-while循环(直到型)
定义:是先运行一次循环体,检测到某个某个条件成立时接着循环。
while型和do-while型的区别:
区别:也就是while型可能不运行循环体,而直到至少运行一次。
语法格式:
do{
语句1;
}while(循环条件);
记得while要加" ;"号
执行流程和while的类似;
do-while案例:猜字游戏:生成一个1-100的随机数,然后键盘输入来猜
package com.demo.day2.flow;
import java.util.Scanner;
public class GuessGameDemo {
public static void main(String[] args) {
// 猜字游戏:随机生成一个1-100的数,然后猜
int num=(int)(Math.random()*100);//Math.random()的生成区间为[0,1)*100后就是[0-100),记得加括号括起来(Math.random()*100)
System.out.println("请输入一个1-100的数:");
int guess;
//从键盘输入值
do {
Scanner sc=new Scanner(System.in);
guess=sc.nextInt();
if(guess>num) {
System.out.println("太大");
}
else if(num>guess) {
System.out.println("太小");
}
}while(guess!=num);//循环条件是输入的数不等于要猜的数
System.out.println("猜对了");
}
}
输出:略
3.for循环
语法格式:
for(表达式1;表达式2;表达式3){
语句;
}
for()括号内分号;不能省略
表达式1;是变量的初始化 n=1;
表达式2;是循环条件 n<5;
表达式3;是对循环条件进行改变的表达式n++;
for的执行流程:
if(条件成立)break;//表示跳出这个循环
for循环内的三个表达式都可以为空,但是要和while型一样放在原来的位置;
for案例:求出200到300之间的数,且满足条件:它们三个数字之积为42、三个数字之和为12
package com.demo.day2.flow;
public class ForDemo {
public static void main(String[] args) {
int a,b,c;
// 求出200到300之间的数,且满足条件:它们三个数字之积为42、三个数字之和为12
for(int i=200;i<300;i++) {//取[200,300)的数
//取出百位
a=i/100;
//取出十位
b=i/10-a*10;
//取出个位
c=i-a*100-b*10;
int e=a*b*c;
int sum=a+b+c;
if(e==42&&sum==12) {
System.out.println("满足条件的数有:"+i);
}
}
}
}
输出:
满足条件的数有:237
满足条件的数有:273
4.循环嵌套
案例1:1!+2!+3!+4!+5!+6!+7!+8!+9!+10!=?
package com.demo.day2.flow;
public class JiecengDemo {
public static void main(String[] args) {
// 1!+2!+3!+4!+5!+6!+7!+8!+9!+10!=?
int s=1,sum=0;
for(int i=1;i<=10;i++){//外层的加
s=1;
for(int j=1;j<=i;j++) {//内层进行阶层运算
s=s*j;//s存放阶层
}
sum=sum+s;
}
System.out.println("1!+2!+3!+4!+...+10!="+sum);
}
}
输出结果:1!+2!+3!+4!+...+10!=4037913
在多重循环中,break语句只向外跳一层。
break语句的使用
break语句的作用:跳出当前循环结构
break语句一旦被执行,循环体中break语句后面的代码将不再被执行
注意:break语句是跳出当前循环
continue语句的使用
continue语句只能用在循环里
continue语句可以结束当前循环的执行,但是要继续下一次循环的执行
(比如i=3时continue;后不执行循环体,但是还要进行i=4的循环)
两者区别:break语句可以使用在switch语句当中,也可以使用在循环语句当中
而continue语句只能使用在循环语句当中;break语句一旦被执行,循环体中break语句后面的代码将不再被执行;
continue语句可以结束当前循环的执行,但是要继续下一次循环的执行