循环结构详解
- 循环结构
- while语句
- do...while语句
- for语句
- **循环关键字:continue,break,return**
- break:
- continue
- return
- 练习1:输出1-100中被5整除的数,每行输出6个
- 练习2:实现一个功能:
循环结构
while语句
循环作用:将部分代码重复执行。 循环只是提高了程序员编写代码的效率,但是底层执行的时候依然是重复执行。
while (布尔表达式) {
循环体;
}
练习:计算1+2+3+4+5
public class TestWhile{
public static void main(String[] args){
//功能:1+2+3+4+5
//1.定义变量:
int num = 1;[1]条件初始化
//2.定义一个求和变量,用来接收和:
int sum = 0;
while(num<=5){[2]条件判断
sum += num;[3]循环体
num++;[4]迭代
}
//3.输出和
System.out.println(sum);
}
}
练习:【1】1+2+3+4+5+。。。。+100
【2】2+4+6+8+。。。。+998+1000
【3】5+10+15+20+。。。+100
【4】99+97+95+。。5+3+1
【5】1乘3乘5乘7乘9乘11乘13
public class TestWhile02{
public static void main(String[] args){
/*
【1】1+2+3+4+5+。。。。+100
int i = 1;
int sum = 0;
while(i<=100){
sum += i;
i++;
}
System.out.println(sum);
【2】2+4+6+8+。。。。+998+1000
int i = 2;
int sum = 0;
while(i<=1000){
sum += i;
i = i+2;
}
System.out.println(sum);
【3】5+10+15+20+。。。+100
int i = 5;
int sum = 0;
while(i<=100){
sum += i;
i = i+5;
}
System.out.println(sum);
【4】99+97+95+。。5+3+1
int i = 99;
int sum = 0;
while(i>=1){
sum += i;
i = i-2;
}
System.out.println(sum);
【5】1*3*5*7*9*11*13
int i = 1;
int result = 1;
while(i<=13){
result *= i;
i = i+2;
}
System.out.println(result);*/
}
}
do…while语句
do {
循环体;
} while(布尔表达式) ;
do-while循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环。do-while循环的循环体至少执行一次。do-while循环结构流程图如图所示:
while和do-while的区别:
while:先判断,再执行
do-while:先执行,再判断—》至少被执行一次,从第二次开始才进行判断
for语句
for (初始表达式; 布尔表达式; 迭代因子) {
循环体;
}
死循环:
for(;;){}
while(true){}
do{
}while(true);
循环分为两大类:
第一类:当型 while(){} for(; 😉{}
第二类:直到型 do{}while();
do-while,while,for循环谁的效率高? 一样高
循环关键字:continue,break,return
break:
break:停止最近的循环:
练习:求1-100的和,当和第一次超过300的时候,停止程序
public class TestFor02{
public static void main(String[] args){
//功能:求1-100的和,当和第一次超过300的时候,停止程序
int sum = 0;
for(int i=1;i<=100;i++){
sum += i;
if(sum>300){//当和第一次超过300的时候
//停止循环
break;//停止循环
}
System.out.println(sum);
}
}
}
break加深理解
public class TestFor03{
public static void main(String[] args){
//break的作用:停止最近的循环
/*
for(int i=1;i<=100;i++){
System.out.println(i);
if(i==36){
break;//1-36;break可以停止的时最近的while,do...while,for语句;不能用来阻止if语句
}
}
*/
for(int i=1;i<=100;i++){
System.out.println(i);
while(i==36){
break; //1-100 ---》break停止的是while循环,而不是外面的for循环
}
}
}
}
break带标签的使用:
public class TestFor04{
public static void main(String[] args){
outer: ----》定义标签结束的位置
for(int i=1;i<=100;i++){
System.out.println(i);
while(i==36){
break outer; ----》根据标签来结束循环
}
}
}
}
continue
continue: 结束本次循环,继续下一次循环
练习:输出1-100中被6整除的数:
for(int i=1;i<=100;i++){
if(i%6!=0){//不被6整除
continue;//停止本次循环,继续下一次循环
}
System.out.println(i);
}
continue带标签的使用:
public class TestFor07{
public static void main(String[] args){
outer:
for(int i=1;i<=100;i++){
while(i==36){
continue outer; //1-100之间没有输出36
}
System.out.println(i);
}
}
}
return
遇到return结束整个方法
public class TestFor08{
public static void main(String[] args){
//return:遇到return结束当前正在执行的方法
for(int i=1;i<=100;i++){
while(i==36){
return; //**结束了整个main方法**
}
System.out.println(i);
}
System.out.println("-----");
}
}
练习1:输出1-100中被5整除的数,每行输出6个
public class TestFor09{
public static void main(String[] args){
/* 输出1-100中被5整除的数,每行输出6个*/
//引入一个计数器:
int count = 0;//初始值为0
for(int i=1;i<=100;i++){
if(i%5==0){//被5整除的数
System.out.print(i+"\t");
count++;//每在控制台输出一个数,count就加1操作
if(count%6==0){
System.out.println();//换行
}
}
}
}
}
练习2:实现一个功能:
【1】请录入10个整数,当输入的数是666的时候,退出程序。
【2】判断其中录入正数的个数并输出。
【3】判断系统的退出状态:是正常退出还是被迫退出。
【1】请录入10个整数,当输入的数是666的时候,退出程序。
【2】判断其中录入正数的个数并输出。
【3】判断系统的退出状态:是正常退出还是被迫退出。
import java.util.Scanner;
public class TestFor10{
public static void main(String[] args){
/*
实现一个功能:
【1】请录入10个整数,当输入的数是666的时候,退出程序。
【2】判断其中录入正数的个数并输出。
【3】判断系统的退出状态:是正常退出还是被迫退出。
*/
//引入一个计数器:
int count = 0;
//引入一个布尔类型的变量:
boolean flag = true; //---》理解为一个“开关”,默认情况下开关是开着的
Scanner sc = new Scanner(System.in);
for(int i=1;i<=10;i++){//i:循环次数
System.out.println("请录入第"+i+"个数:");
int num = sc.nextInt();
if(num>0){//录入的正数
count++;
}
if(num==666){
flag = false;//当遇到666的时候,“开关”被关上了
//退出循环:
break;
}
}
System.out.println("你录入的正数的个数为:"+count);
if(flag){//flag==true
System.out.println("正常退出!");
}else{//flag==false
System.out.println("被迫退出!");
}
}
}