首页 > 技术文章 > java-循环-for & while

ljq697 2020-04-02 22:56 原文

for循环

循环格式:

for (初始化语句;条件判断语句;条件控制语句) { 
      循环体语句; 
}    

格式解释:

  • 初始化语句:循环开始的时候什么样
  • 条件判断语句:判断循环是否能一直执行下去
  • 循环体语句:循环反复执行的事情
  • 条件控制语句:控制循环是否能执行下去

 执行流程:

①执行初始化语句
②执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
练习:
public class ForTest01 { 
       public static void main(String[] args) { 
           //需求:输出数据1-5 
            for(int i=1; i<=5; i++) {
                 System.out.println(i); 
            }
            System.out.println("--------"); 
            //需求:输出数据5-1 
            for(int i=5; i>=1; i--) { 
                 System.out.println(i); 
            } 
       }
}
public class ForTest02 { 
     public static void main(String[] args) {
         //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0 
         int sum = 0;     //从1开始到5结束的数据,使用循环结构完成 
         for(int i=1; i<=5; i++) { 
             //将反复进行的事情写入循环结构内部 
             //此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中
         sum += i;
             /* sum += i; sum = sum + i; 
             第一次:sum = sum + i = 0 + 1 = 1; 
             第二次:sum = sum + i = 1 + 2 = 3; 
             第三次:sum = sum + i = 3 + 3 = 6; 
             第四次:sum = sum + i = 6 + 4 = 10; 
             第五次:sum = sum + i = 10 + 5 = 15; 
             */
         }
            //当循环执行完毕时,将最终数据打印出来 
     System.out.println("1-5之间的数据和是:" + sum); 
     }
}
//遇到的需求中,如果带有求和二字,请立即联想到求和变量

//求和变量的定义位置,必须在循环外部,如果在循环内部则计算出的数据将是错误的

 

 

水仙花

public class ForTest04 { 
     public static void main(String[] args) { 
     //输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束 

        for(int i=100; i<1000; i++) { 
        //在计算之前获取三位数中每个位上的值 
            int ge = i%10; 
            int shi = i/10%10; 
            int bai = i/10/10%10; 
        //判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等 

            if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { 
           //输出满足条件的数字就是水仙花数 
            System.out.println(i); 
            } 
         } 
       }
 }
public class ForTest0  { 
    public static void main(String[] args) {
    //定义变量count,用于保存“水仙花数”的数量,初始值为0 
      int count = 0; 
       //输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束 

      for(int i=100; i<1000; i++) {
       //在计算之前获取三位数中每个位上的值 
        int ge = i%10; 
        int shi = i/10%10;
        int bai = i/10/10%10;
    //在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count+1 

        if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { 
           count++; 
        } 
      }
    //打印输出最终结果 
    System.out.println("水仙花共有:" + count + "个"); 
   }
}

 

while循环

格式:

   初始化语句; 
   while (条件判断语句) { 
         循环体语句; 
        条件控制语句;
   }

执行流程:

①执行初始化语句
②执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
 
public static void main(String[] args) {
   //需求:在控制台输出5"HelloWorld"
   //for循环实现
   for(int i=1; i<=5; i++) {
       System.out.println("HelloWorld");
   }
   System.out.println("--------");
    //while循环实现
   int j = 1;
   while(j<=5) {
        System.out.println("HelloWorld");
        j++;
   }
}
 
折叠珠穆朗玛峰
 
 
public static void main(String[] args) {
      //定义一个计数器,初始值为0
      int count = 0;
      //定义纸张厚度
      double paper = 0.1;
      //定义珠穆朗玛峰的高度
      int zf = 8844430;
      //因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while循环
      //折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度
      while(paper <= zf) {
      //循环的执行过程中每次纸张折叠,纸张的厚度要加倍
      paper *= 2;
      //在循环中执行累加,对应折叠了多少次
      count++;
      }
      //打印计数器的值
      System.out.println("需要折叠:" + count + "");
      }
 
do...while循环
 格式:
     初始化语句;
       do {
       循环体语句;
       条件控制语句;
       }while(条件判断语句);
 
 

三种循环的区别

1. for,while是先判断条件再决定是否执行循环体

do...while先执行一遍循环体,然后再判断条件。

2. for循环初始化表达式位置定义的变量出了for循环就不能使用了。

 

while,do...while循环初始化表达式位置定义的变量出了循环还能使用

三种循环的使用场景:

for循环:已知循环次数,建议使用for循环。

while循环: 未知循环次数,建议使用while循环

 

do...while循环:  基本不用,

 

推荐阅读