代码执行顺序之循环执行:forwhiledowhile嵌套循环

article/2025/9/15 23:33:39

代码执行顺序之循环执行

循环执行的分类

  1. for循环
  2. while循环
  3. dowhile循环

for循环

语法:

for(循环初始化表达式;循环条件表达式;循环后的操作表达式){

​ // 循环体

}

执行步骤分析:

  1. 循环初始化表达式最先执行,并且只执行一次

  2. 当循环条件表达式为true时,则执行循环体

    当循环条件表达式为fasle时,则跳出循环,执行循环外的语句

  3. 当循环体执行完毕,立刻执行循环后的操作表达式

  4. 当循环后的操作表达式执行完毕,立刻执行循环条件表达式,判断成不成立

画图分析:
在这里插入图片描述

总结:

  1. 循环初始化表达式中声明的变量,称为循环变量

  2. 循环条件表达式返回结果必须是boolean类型,如果省略循环条件表达式,默认值为ture

  3. 循环初始化表达式和循环后的操作表达式没要求,语法编译能通过即可

    代码展示:

    public class ForTest{public static void main(String[] args){int i = 0;for(System.out.println("A");i < 3;System.out.println("C")){System.out.println("B");}}
    }
    

    代码展示:

    public class ForTest{public static void main(String[] args){for(int i = 1,j = 5;j > -1;i += 2,j -= 3){System.out.println("i = " + i + "j = " + j);}}
    }
    

练习:

  1. 输出[1,100]之间的所有整数

    代码展示:

    public class ForTest{public static void main(String[] args){for(int i = 1;i <= 100;i++){System.out.println(i);}}
    }
    
  2. 输出0(包含)到100(包含)之间的数, 分别以递增和递减的方式实现

    代码展示:

    public class ForTest{public static void main(String[] args){// 递增for(int i = 0;i<=100;i++){System.out.println(i);}// 递减for(int i = 100;i>=0;i--){System.out.println(i);}}
    }
    
  3. 输出1到100之间的奇数和偶数;

    代码展示:

    public class ForTest{public static void main(String[] args){for(int i = 1;i <= 100;i++){if(i % 2 == 0){continue;}System.out.println("奇数i = " + i);}for(int i = 2;int i <= 100;i+=2){System.out.println("偶数i = " + i);}}
    }
    
  4. 输入一个正整数n,计算1+2+3+…+n的和

    代码实现:

    public class ForTest{public static void main(String[] agrs){java.util.Scanner input = new java.util.Scanner(System.in);System.out.print("请输入一个正整数:");int n = input.nextInt();int sum = 0;for(int i = 1;i<=n;i++){sum += i;}System.out.println(sum);}
    }
    
  5. 输入一个正整数n,计算1-2+3-4+5-6+…-(n-1)+n的和

    代码展示:

    public class ForTest{public static void main(String[] args){java.util.Scanner input = new java.util.Scannner(System.in);System.out.print("请输入一个正整数:");int n  = input.nextInt();int sum = 0;for(int  i = 1;i<=n;i++){if(i % 2 == 0){sum -= i;}else{sum += i;}}System.out.println(sum);}
    }
    
  6. 输出1到1000之间既能被5整除又能被3整除的数,并且每行输出5个。

    代码展示:

    public class ForTest{public static void main(String[] args){int count = 0;for(int i = 1;i<=1000;i++){if(i % 5 == 0 && i %  3 == 0){System.out.print(i + "\t");count++;if(count %  5 == 0){System.out.println();}}}}
    }
    
  7. 请问以下代码执行完,循环后i的值是多少?

    public class ForTest{public static void main(String[] args){int i = 1;for(;i <= 3;i++){System.out.println(i);}System.out.println(i); // 4}
    }
    

    答:循环后的i的结果是4

while循环

语法:

while(循环条件表达式){

​ // 循环体

}

执行:

  1. 判断循环条件表达式是否成立,如果成立就执行循环体,否则跳出循环,执行循环外的语句
  2. 当循环体执行完毕,再次去判断循环条件表达式是否成立

注意:循环后的操作表达式放在循环体前|后有本质区别,使用时一定切忌

代码展示:

public class ELTest{public static void main(String[] args){int i = 1;while(i<=10){System.out.println(i);i++;}}
}

代码展示

public class ELTest{public static void main(String[] args){int i = 1;while(i <= 10){i++;System.out.println(i);}}
}

练习:

  1. 输出1到1000之间既能被5整除又能被3整除的数,并且每行输出5个

    代码展示:

    public class ElTest{	public static void main(String[] args){int count = 0;int i = 1;while(i<=1000)){if(i % 5 == 0 && i % 3 == 0){System.out.println(i + "\t");count++;if(count % 5 ==0){System.out.println();}}i++;}   	}}
    

dowhile循环

语法:

do{

// 循环体

}while(循环条件表达式);

注意:“循环后的操作表达式”在“循环体”的前|后面有本质区别,谨慎使用

实例:类似生活中的先学习后考试,考试通过才能到下一阶段学习

whiledowhile循环的区别

while:先判断后执行,循环体可能一次也不会执行

dowhile:先执行后判断,循环体至少会被执行一次

循环执行的总结

for循环最常用,while其次,dowhile几乎不用

循环需要循环变量

  1. 循环变量需参与运算,一定要设置好初始值
  2. 循环变量不需要参与运算,只用于控制循环次数

死循环不需要循环变量

代码展示:

public class DoWhileTest{public static void main(String[] args){int i = 1;do{System.out.println(i);i++;}while(i <= 10);}
}

练习:

  1. 输入[1,100]间的所有正整数

    代码展示:

    public class ShowNumTest{public static void main(String args[]){int i = 1;do{System.out.println(i);i++;}while(i<=100);}
    }
    

关于死循环的讲解

死循环:循环体始终执行,终止不了程序的运行

死循环的分类:

  1. 对程序有害的死循环
  2. 对程序有利的死循环
对程序有害的死循环:

起因:每趟循环执行完毕都离循环的终止条件越来越远,属于逻辑错误

代码展示:

public class ForTest{public static void main(String[] args){for(int i = 1;i<=100;i--){System.out.println(i);}}
}
对程序有利的死循环:

需求:不明确循环次数时,可使用死循环

注意:死循环一般配合break关键字使用

代码展示:

public class Test{public static void main(String[] args){int i = 0;do{i++;if(i == 3){break;}System.out.println(i);}while(i < 10);}   
}
死循环的用法

针对for循环的死循环,省略“循环条件表达式”,默认为true(使用较少

语法:

for( ; ;){

​ // 循环体

}

代码展示:

public class ForTest{public static void main(String[] args){for(;;){System.out.println("哈哈");}}
}

针对while循环的死循环,可读性强,语法便捷(最常用)

语法:

while(true){

​ // 循环体

}

代码展示:

public class WhileTest{public static void main(String[] args){while(true){System.out.println("嘻嘻");}}
}

break关键字(最常用)

使用场合:

  1. 循环(for、while{} 、do{}while();)
  2. switch语句

作用:

  1. 若作用于switch语句,用于结束switch语句,执行switch语句外的代码
  2. 若作用于循环,用户结束当前循环,执行循环外的语句

代码展示:

// Switch 
public class SwitchTest{public static void main(String[] args){java.util.Scanner input = new java.util.Scanner(System.in);int month =  input.nextInt();switch(month){case 1:case 2:case 12:System.out.println("冬季");break;case 3:case 4:case 5:System.out,println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;default:System.out.println("季节不存在");}}
}
// for
public class ForTest{public static void main(String[] args){for(int i = 1;i<=10;i++){if(i == 3){break;}System.out.println(i);}System.out.println("over");}
}
// dowhile
public class DowhileTest{public static void main(String[] args){int i = 0;do{i ++ ;if(i == 3){break;}System.out.println(i);}while(i <= 9);}
}
// while
public class WhileTest{public static void main(String[] args){int i = 0;while(i<=9){i++;if(i==3){break;}System.out.println(i);}System.out.println("over");}
}

注意:break作用于离其最近的循环语句|switch语句

画图分析:
在这里插入图片描述


return关键字

使用场合:

只能在方法中使用

作用:

结束当前方法

returnbreak区别:

break可用于结束当前循环,循环后的代码会正常执行

return用于结束当前方法,循环后的代码将不会 被执行

代码展示:

public class ReturnTest{public static void main(String[] agrs){for(int i = 0;i< 9 ;i++){if(i == 3){return;}System.out.println(i);} System.out.println("over");}
}

注意:在return&break之后不要书写任何代码,因为这些代码是死代码,永远不会被执行

练习:

  1. 韩信点兵,三人一组余两人,五人一组余三人,七人一组余四人,请问需要多少士兵?

    代码展示:

    public class  ForTest{  public static void main(String[] args){for(int i = 1;;i++){if( i % 3 == 2 && i % 5 == 3 && i % 7 == 4){System.out.println("韩信点兵需要的人数为"+ i);break;}}}
    }
    

    总结:“死循环”一般和“break”关键字一起使用,当不明确循环次数时,建议直接使用死循环

  2. 输入一个任意整数,判断它是否为质数,如果是质数就输出“是质数”,否则输出‘不是质数’。

    质数:除了1和它本身之外,不能被其他数整除的正整数称质数。

    代码展示:

     // 方式一:
    public class MethodOne{public static void main(String[] args){Scanner input  = new Scanner(System.in);System.out.println("请输入一个正整数:");int  num = input.nextInt();boolean flag = true;for(int i = 2;i< num;i++){if(num % i == 0){flag = false;break;}}if(flag){System.out.println("num 是一个质数,num = " + num);}else{System.out.println("num不是一个质数,num = " + num);}}
    }
    
    // 方式二:
    public class MethodTWo{
    public static void main(String[] args){Scanner input = new Scanner(System.in);System.out.println("请输入一个正整数:");int num  = input.nextInt();int i = 2;for(;i < num;i++){if(num % i == 0){break;}}if(num == i){System.out.println("num 是一个质数,num = " + num);}else{System.out.println("num不是一个质数,num = " + num);}
    }
    }
    

continue关键字(使用较少)

作用:

结束当次本次循环,继续执行下一次循环

使用场合:

只能在循环中使用

注意:在return、continue和break之后,不要写代码,因为这些是死代码,永远不会执行

代码展示:

public class ContinueTest{public static void main(String[] args){for(int i = 0;i<=10;i++){if(i == 2){continue;}System.out.println(i);}}
}
public class ContinueTest{public static void main(String[] args){int i = 10;while(i<=20){if(i==15){continue;}System.out.println(i);i++;}}
}

画图分析:
在这里插入图片描述

练习:

  1. 使用continue关键字实现输出1到100之间能被5整除的数

    代码展示:

    public class ContinueTest{public static void main(String[] args){if(int i = 1; i <= 100;i++){if(i % 5 != 0){continue;}    System.out.println(i);}}
    }
    

    嵌套循环

    特点:外出循环变量变化一次,内侧循环的循环变量完整执行一整遍

    注意:外侧循环用来控制行数,内侧循环用来控制空格数和星星数

    练习:

    1. 在控制台先打印矩形

      如图所示:
      在这里插入图片描述

      代码展示:

      public class Demo{public static void main(String[] args){for(int i = 0;i < 3;i++){for(int j = 1;j < 10;j++){System.out.prnt("*")}System.out.println();}}
      }
      
    2. 打印平行四边形

      如图所示:
      在这里插入图片描述

      代码展示:

      public class Test{public static void main(String[] args){for(int i = 0;i < 4;i++){// 内侧循环:用来控制空格数for(int j = 0;j < i;j++){System.out.print(" ");}// 内侧循环:用来控制星星数for(int j  = 0;j < 9;j++){System.out.print("*");}System.out.println();}}
      }
      
    3. 打印等腰三角形

      如图所示:
      在这里插入图片描述

      代码展示:

      import java.util.Scanner;
      public class DouleLoopTest{public static void main(String[] args){Scanner input = new Scanner(System.in);System.out.println("请输入行数");int num = input.nextInt();// 外侧循环用来控制行数for(int i = 0;i<num;i++){// 内侧循环用来控制空格数for(int j = 0;j< num - i - 1;j++){System.out.print(" ");}// 内侧循环用来控制星星数for(int j = 0;j < 2 * i + 1;j++){System.out.print("*");}System.out.println();}}
      }
      
    4. 打印菱形

      如图所示:
      在这里插入图片描述

      代码展示:

      import java.util.Scanner;
      public class DoubleLoopTest{public static void main(String[] args){Scanner input = new Scanner(System.in);System.out.print("请输入菱形的行数:");int length =  input.nextInt();// 外侧循环 : 用来控制行数for(int i = 0;i < length / 2 + 1; i++){// 内侧循环1:用于控制空格数for(int j = 0; j < length/2+1 - i - 1; j++) {System.out.print(" ");}// 内侧循环2:用于控制星星数for(int j = 0; j < 2 * i + 1; j++) {System.out.print("*");}System.out.println();}// 外侧循环用来控制行数for(int i = 0;i < length / 2;i++){// 内侧循环用来控制空格数for(int j = 0;j < i + 1;j++){System.out.print(" ");}// 内侧循环用来控制星星数for(int j = 0;j < 2 * (length / 2 - i -1) + 1;j++){System.out.print("*");}System.out.println();}}
      }
      
    5. 打印空心菱形

      如图所示:
      在这里插入图片描述

      代码展示:

      import java.util.Scanner;
      public class DoubleLoopTest{public static void main(String[] args){Scanner input = new Scanner(System.in);System.out.println("请输入菱形的行数:");int length = input.nextInt();for(int i = 0 ;i < length / 2 + 1;i++){for(int j = 0;j < length / 2 + 1 - i - 1;j++){System.out.print(" ");}for(int j = 0;j < 2 * i + 1;j++){if(j == 0 || j == 2 * i){System.out.print("*");}else{System.out.print(" ");}}System.out.println();}for(int i = 0; i < length / 2 ;i ++ ){for(int j = 0;j < i + 1;j++){System.out.print(" ");}for(int j = 0;j < 2 * (length/2-i-1) + 1;j++){if(j == 0 || j == 2 * (length/2-i-1)){System.out.print("*");}else{System.out.print(" ");}}System.out.println();}}
      }
      
    6. 打印乘法口诀表

      如图所示:
      在这里插入图片描述

      代码展示:

      public class NineNineTable {public static void main(String[] args) {// 打印九九乘法口诀表// 外侧循环控制行数for(int i = 1;i <= 9;i++){	for(int j = 1 ;j <= i;j++){System.out.print(j+ "*" + i  + "=" + (j*i)+"\t");}System.out.println();}}
      }
      
    7. 输入[0,9]之间的一个数,输出数字构成的1~5位整数的和,如输入2,则计算出2 + 22 + 222 + 2222 + 22222之和

      代码展示:

      import java.util.Scanner;
      public class DoubleLoopTest01 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入[0,9]之间的整数:");int num = input.nextInt();int result = 0;int sum = 0;for(int i = 0;i < 5;i++){result *= 10;result += num;sum += result;}System.out.println(sum);}
      }
      
    8. 搬砖问题:36块砖,36个人搬,男搬4块,女搬3块,两个小孩搬1块,要求一次搬完,问需要男、女、小孩各多少人?

      代码展示:

      public class DoubleLoopTest01{public static void main(String[] args){for(int x = 0;x < 9 ;x++){for(int y  = 0 ;y < 12;y++){for(int z = 0;z < 36;z += 2){if(x+y+z == 36 && x * 4 + y * 3 + z / 2 == 36){System.out.println("男人:" + x + " 女人:" + y + " 小孩:" + z);}}}}}
      }
      

      此文章于11月25日编辑完毕,小编也是个初学者,或许有些内容写的有错误的,我对自己的要求是:有错改之,无错加勉。还望大家能在评论区指点迷津,不胜感激,同时也希望大家口下留情!!


http://chatgpt.dhexx.cn/article/gWYo0BiS.shtml

相关文章

dowhile的学习

dowhile的学习 dowhile 的概念及他与while的区别 package javaxunhuanjiegou; ​ public class DoWhile {public static void main(String[] args) {int a 0;int sum 0;do {sum sum a;a;} while (a < 100);System.out.println(sum);} } ​ 我们来跟直观的感受一下 于…

循环结构 --> do while循环

do while循环 do {循环体;} while(条件表达式);执行循环体 > 判断条件表达式是否成立> 若成立&#xff0c;则执行循环体 > 判断条件表达式是否成立> 若不成立&#xff0c;则循环结束do while循环主要用于至少执行一次循环体的场合中。package demo;/*编程实现do wh…

do while循环和whil循环(内含流程图)

C语言的三大循环语句除去for循环语句还剩下do while和while循环&#xff0c;因为这两个很相似所以这里放在一起讲解。希望读完本文能对你有所帮助。 do while循环和whil循环 一、do...while二、while 一、do…while do while的语法循环结构如下所示。 do while的逻辑循环结构…

SQL中join操作后面的on与where的区别

join关键字的作用是将多个表按一定的条件联合起来&#xff0c;从而可以实现从多个表中获取数据 在join后面可以接on条件和where条件&#xff0c;在这里我主要就是说这两者之间的差别 建立两张简单的用来测试的表并添加数据&#xff0c;如下所示&#xff0c;一张表名为id_name…

MySql 各种join的使用方法

具体详解如下 1 INNER JOIN(内连接) SELECT * FORM TABLE_A A INNER JOIN TABLE_B B ON A.KEY B.KEY 2 LEFT JOIN (左连接) SELECT * FORM TABLE_A A LEFT JOIN TABLE_B B ON A.KEY B.KEY 3 RIGHT JOIN (右连接) SELECT * FROM TABLE_A A RIGHT TABLE_B B ON A.KE…

SQL 中JOIN ON 的AND条件设置

关于在A LEFT JOIN B ON A.id B.id 后面跟AND 条件的测试。 有如下的结构数据&#xff1a; 注意此LEFT ON 跟AND 限制A表的场景&#xff1b; dat a.sql 1.43KB 有如下的表结构 使用SQL进行查询&#xff1a; &#xff08;1&#xff09;SELECT * FROM table_name a LEFT J…

简单说说SQL中Join的使用

最近工作中&#xff0c;遇到了一起由于慢SQL引起DB CPU > 90% &#xff0c;数据库hang住。。最终导致其他业务查询统统失败。 细看下来是由于几张大表Join关联查询引起的&#xff0c;故障本身很常见&#xff0c;不过让我想到有必要讲讲如何规避Join的问题。 以下的讨论都是基…

SQL-JOIN全解析

SQL-JOIN全解析 一、SQL JOIN的作用是什么&#xff1f;二、四种JOIN的区别三、如何使用各种join&#xff08;一&#xff09;准备测试数据&#xff08;二&#xff09;左连接&#xff08;三&#xff09;右连接&#xff08;四&#xff09;内连接&#xff08;五&#xff09;外连接 …

SQL中join语句详解

1.inner join(内连接) 只返回匹配的行。 select * from table_a a inner join table_b b on a.name b.name 2.left join(左外连接) 返回左表的全部数据&#xff0c;和右表中满足on条件的行&#xff0c;如果左表的行在右表中没有匹配的数据&#xff0c;那么这一行中右表对应…

SQL Server 数据库常用操作:多表联查(JOIN...ON语句的使用)

1.使用传统连接方式查询 (1). 有两张表Book(BookID,BookName,TypeID,AuthorID,…)&#xff0c;BookType(TypeID,TypeName)&#xff0c;查询每本书的书名和图书类型。 SELECT BookName, TypeName FROM Book, BookType WHERE Book.TypeID BookType.TypeID(2). 有三张表Book(Boo…

Oracle SQL中join方式总结

在ORACLE数据库中&#xff0c;表与表之间的SQL JOIN方式有多种&#xff08;不仅表与表&#xff0c;还可以表与视图、物化视图等联结&#xff09;。SQL JOIN其实是一个逻辑概念&#xff0c;像NEST LOOP JOIN、 HASH JOIN等是表连接的物理实现方式。 为了更直观的了解以上join方式…

SQL语句中的join用法

SQL中join的各种用法 1.自然连接&#xff08;natural join&#xff09; 自然连接将表中具有相同名称的列自动进行匹配&#xff0c;自然连接不必指定任何同等连接条件也不能认为指定哪些列需要被匹配&#xff0c;自然连接得到的结果表中&#xff0c;两表中名称相同的列只出现一次…

sql中join的各种用法

sql中join的用法 sql中join的含义可以理解为单词“join”&#xff0c;用来连接两张表&#xff0c;join所有连接方式可以分为&#xff1a; 内连接&#xff0c;外连接&#xff0c;右连接&#xff0c;左连接&#xff0c;自然连接 上面这张图已经很清晰的表明了各种连接方式的语法…

SQL Server中JOIN的使用方法总结

JOIN 分为&#xff1a;内连接&#xff08;INNER JOIN&#xff09;、外连接&#xff08;OUTER JOIN&#xff09;。 其中&#xff0c;外连接分为&#xff1a;左外连接&#xff08;LEFT OUTER JOIN&#xff09;、右外连接&#xff08;RIGHT OUTER JOIN&#xff09;、全外连接&…

sql 语法中 join 的所有用法总结(简单例子)

join 常见的用法有&#xff1a; 目录 left join (left outer join) right join (right outer join) join (inner join) full join&#xff08;full outer join 、outer join&#xff09; cross join 说明&#xff1a;left join 就是 left outer join、 right join 就是 r…

SQL语句各种join用法(图文)

1、INNER JOIN(内连接) select * from table A A inner join table B B on A.key B.key //内连接 2、LEFT JOIN(左连接) select * from table A A left join table B B on A.key B.key //左连接 3、RIGHT JOIN(右连接) select * from table A A right join table B B on A…

sql join中on条件后接and和where

目录 场景1&#xff1a;left join on a.xx b.xx and a.xx2 aa 场景2&#xff1a;left join on a.xx b.xx and b.xx2 aa 场景3&#xff1a;left join on a.xx b.xx where b.xx2 aa 场景4&#xff1a;inner join on a.xx b.xx where a.xx2 aa 场景5&#xff1a;…

详解SQL中的各种连接(JOIN)方法

详解SQL中的各种连接(JOIN)方法 简介 有时候为了得到完整的结果&#xff0c;我们需要从两个或更多的表中获取结果&#xff0c;而 SQL 就提供了 JOIN 子句&#xff0c;用来把来自两个或者多个表的行结合起来&#xff08;基于这些表之间的共同字段&#xff09; 数据库中的表可以…

SQL语句中JOIN的用法

记录&#xff1a;257 写SQL最高境界&#xff1a;SELECT * FROM 表名。当然这是一句自嘲。探究一下SQL语句中JOIN的用法&#xff0c;直到经历这个场景&#xff0c;变得想验证一下究竟。 一、场景 把关系型数据库A中表TEST_TB01和TEST_TB02迁移到大数据平台M&#xff08;MaxCom…

SQL中连接(JOIN)子句介绍

本文主要介绍 SQL&#xff08;Structured Query Language&#xff09;中连接&#xff08;JOIN&#xff09;子句的相关知识&#xff0c;同时通过用法示例介绍连接的常见用法。 说明&#xff1a;本文的用法示例是面向 MySQL 数据库的。 1 概述 SQL 中 JOIN 子句用于把来自两个…