for循环

格式

  • 程序格式
1
2
3
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}

执行流程

  1. 执行初始化语句

  2. 执行条件判断语句,看其结果是true还是false

    ​ 如果是false,循环结束

    ​ 如果是true,继续执行

  3. 执行循环体语句

  4. 执行条件控制语句

  5. 回到2继续

    for循环执行流程

案例

案例案例
  • 输出五次helloworld

    1
    2
    3
    4
    5
    6
    7
    8
    public class ForTest {
    public static void main(String[] args) {
    //输出五次helloworld
    for (int i=1;i<=5;i++){
    System.out.println("helloworld");
    }
    }
    }
  • 求和

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class ForTest {
    public static void main(String[] args) {
    //求1到10之和
    int n = 0;
    for (int i = 1;i <= 10;i++ ){
    n +=i;
    }
    System.out.println(n);
    }
    }
  • 求偶数和

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class ForTest {
    public static void main(String[] args) {
    //求偶数和
    int num = 0;//定义偶数之和
    for (int i = 1; i <= 10; i++) {
    if(i%2==0){ //取余的方法
    num+=i; //利用下标确定偶数
    }
    }
    System.out.println(num);
    }
    }
  • 求水仙花数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class ForTest {
    public static void main(String[] args) {
    //定义变量n,用以保存水仙花数的数量,初始为0
    int n = 0 ;
    //输出水仙花数用到的循环
    for (int i = 0;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); //输出水仙花数
    n++;
    }
    }
    //打印最终结果
    System.out.println("水仙花数共有" + n + "个");
    }
    }

while循环

格式

  • 完整格式

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

执行流程

  1. 执行初始化语句

  2. 执行条件判断语句,看其结果是true还是false

    ​ 如果是false,循环结束

    ​ 如果是true,继续执行

  3. 执行循环体语句

  4. 执行条件控制语句

  5. 回到2继续

    while循环执行流程

案例

案例案例
  • 一张纸这多少次比珠穆朗玛峰高

    • 因为要反复折叠,所以要使用循环,但是不知道折叠几次,这种情况下更适合使用while循环

      while(条件判断语句){循环体}

    • 循环的执行过程中每次纸张折叠,纸张的厚度要加倍因此需要先定义纸张厚度,在循环中使厚度加倍

      double paper = 0.1;

      while (条件判断语句){

      ​ paper *= 2;}

    • 折叠过程中当智障厚度大于珠峰就停止了,因此继续执行的要求使纸张厚度小于珠峰高度

      int zf = 8844430;

      while (paper <= zf ){…}

    • 设置一个计数器,在循环中执行累加,对应折叠了多少次

      int count = 0;

      while ( paper <= zf ){

      ​ count++;

      }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class WhileTest {
    public static void main(String[] args) {
    int zf = 8844430;
    double paper = 0.1;
    int count = 0;
    while (paper <= zf){
    paper *= 2;
    count++;
    }
    System.out.println(count);
    }
    }

do…while循环

格式

  • 完整格式

    1
    2
    3
    4
    do{
    循环体语句;
    条件控制语句;
    }while(条件判断语句);

执行流程

  1. 执行初始化语句

  2. 执行循环体语句

  3. 执行条件控制语句

  4. 执行条件判断语句,看其结果是true还是false

    ​ 如果是false,循环结束

    ​ 如果是true,继续执行

  5. 回到2继续

do...while循环

案例

  • 输出五次helloworld

    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class DoWhileTest {
    public static void main(String[] args) {
    int j = 1;
    do {
    System.out.println("helloworld");
    j++;
    }while (j<=5);
    }
    }

三种循环的区别

三种之间的区别

  • for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
  • do…while循环先执行一次循环体,然后判断条件是否成立,是否继续循环体(先执行后判断)

for和while的区别

  • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
  • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用

死循环格式

  • for(;;){}
  • while(true){}
  • do{}while(true);

p.s.

  • for循环常用于知道循环次数的问题

  • while常用于不知道循环次数的问题

  • while的死循环格式是最常用的

  • ctrl+c可结束死循环

跳转控制语句

  • 跳过6和7

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class TiaoZhuanTest {
    public static void main(String[] args) {
    for(int i = 0;i<=20;i++){
    if (i==7|i==6){
    //continue;
    //break;
    }
    System.out.println(i);
    }
    }
    }

循环嵌套

  • 九九乘法表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class QianTaoTest {
    public static void main(String[] args) {
    for (int i = 1; i <= 9; i++) {

    for (int j = 1; j <= i; j++) {

    System.out.print(i + "*" + j + "=" + i * j + " ");

    }

    System.out.println();

    }
    }
    }