循环结构详解

  • 循环结构
  • 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循环结构流程图如图所示:

Java 循环增加数值 java循环加二_java

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("被迫退出!");
                }
                
                
                
        }
}