if/while/do-while/for循环以及跳出循环break/return/continue

男娘i 2022-09-02 08:44 324阅读 0赞

流程控制对任何一门编程语言都是至关重要的,它为我们提供了控制程序步骤的基本手段。常见对主要分为,条件语句、循环语句、跳转语句。

1、if语句

if 语句是一种判断语句。

语法:

  1. if(条件){
  2. 条件成立时执行的代码
  3. }

if语句执行过程

if...else 语句当条件成立时,则执行 if 部分的代码块; 条件不成立时,则进入 else 部分。例如,如果一个月天数大于 30 天,则为大月,否则为小月。

语法:

  1. if(条件){
  2. 代码块1
  3. }
  4. else{
  5. 代码块2
  6. }

if...else语句执行过程

多重 if 语句,在条件 1 不满足的情况下,才会进行条件 2 的判断,以此向下;当前面的条件均不成立时,最终执行 else 块内的代码。

语法:

  1. if(条件1){
  2. 代码块1
  3. }
  4. else if(条件2){
  5. 代码块2
  6. }
  7. ...
  8. else {
  9. 代码块n
  10. }

多重if语句

注意:如果 if(或 else if,或 else) 条件成立时的执行语句只有一条,是可以省略大括号的!但如果执行语句有多条,那么大括号就是不可或缺的。

比如:

  1. int days = 31;
  2. if(days > 30)
  3. System.out.println("本月是大月");
  4. else
  5. System.out.println("本月是小月");

if 语句是可以在内层进行嵌套的。嵌套 if 语句,只有当外层 if 的条件成立时,才会判断内层 if 的条件。

语法:

  1. if(条件1){
  2. if(条件2){
  3. 代码块1
  4. }
  5. else{
  6. 代码块2
  7. }
  8. }
  9. else{
  10. 代码块3
  11. }

if的嵌套

if 语句练习:小明考了 78 分,60 分以上及格,80 分以上为良好,90 分以上为优秀,60 分以下要重考,编写源代码 ScoreJudge.java,输出小明的情况。

参考代码如下:

  1. public class ScoreJudge {
  2. public static void main(String[] args){
  3. int score = 78;
  4. if(score >= 60){
  5. if(score >= 80){
  6. if(score >= 90){
  7. System.out.println("成绩优秀");
  8. }
  9. else{
  10. System.out.println("成绩良好");
  11. }
  12. }
  13. else{
  14. System.out.println("成绩及格");
  15. }
  16. }
  17. else{
  18. System.out.println("需要补考");
  19. }
  20. }
  21. }

:所有的条件语句都是利用条件表达式的真或假来决定执行路径,Java 里不允许将一个数字作为布尔值使用,虽然这在 C 和 C++ 是允许的,如果要在布尔测试里使用一个非布尔值,需要先用一个条件表达式将其转换成布尔值,其他控制语句同理。

编译执行:

  1. $ javac ScoreJudge.java
  2. $ Java ScoreJude
  3. 成绩及格

2、switch 语句

当需要对选项进行等值判断时,使用 switch 语句更加简洁明了。比如:摇号摇到 1 的得一等奖,摇到 2 的得二等奖,摇到 3 的得三等奖,摇到其他的没有奖。

语法:

  1. switch(表达式){
  2. case 1:
  3. 代码块1
  4. break;
  5. case 2:
  6. 代码块2
  7. break;
  8. ...
  9. default:
  10. 默认执行的代码块
  11. }

switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。

  • defualt 块不是必须的,默认为空。

新建一个源代码文件Draw.java

  1. public class Draw {
  2. public static void main(String[] args){
  3. int num = 2;
  4. switch(num){
  5. case 1:
  6. System.out.println("恭喜你,获得了一等奖");
  7. break;
  8. case 2:
  9. System.out.println("恭喜你,获得了二等奖");
  10. break;
  11. case 3:
  12. System.out.println("恭喜你,获得了三等奖");
  13. break;
  14. default:
  15. System.out.println("很遗憾,下次再来");
  16. }
  17. }
  18. }

编译运行:

  1. $ javac Draw.java
  2. $ java Draw
  3. 恭喜你,获得了二等奖

while 和 do-while 语句

3、while语法:

  1. while(条件){
  2. 代码块
  3. }

while 的执行过程是先判断,再执行。

  1. 判断 while 后面的条件是否成立 ( true or false )
  2. 当条件成立时,执行循环内的代码。

然后重复执行 12, 直到循环条件不成立为止。

while的语句流程

4、 do-while 语法:

  1. do{
  2. 代码块
  3. }while(条件);

do-while 的执行过程是先执行一次,再循环判断(所以循环内的代码至少会执行一次)。

  1. 先执行一遍循环操作,然后判断循环条件是否成立。
  2. 如果条件成立,继续执行12,直到循环条件不成立为止。

do...while的流程

如:

  1. int i = 0;
  2. while(i < 100){
  3. System.out.println("I love ShiYanlou!");
  4. i++;
  5. }
  6. int i = 0;
  7. do {
  8. System.out.println("I love ShiYanlou!");
  9. i++;
  10. } while(i < 100);

练习:分别用 whiledo-while 两种方法,编写代码,文件名为: SumOfEven.java。实现计算 1-1000 中所有偶数的和,并输出。验证一下两种方法你输出的结果是一致吗?

参考代码如下:

  1. public class SumOfEven {
  2. public static void main(String[] args){
  3. int i1 = 1, i2 = 1;
  4. int sum1 = 0, sum2 = 0;
  5. while (i1 <= 1000){ //循环1000次
  6. if(0 == i1 % 2){ //判断是否为偶数
  7. sum1 += i1; //将偶数加入到总数里
  8. }
  9. i1++; //i自增1
  10. }
  11. System.out.println("用while,1到1000中,所有偶数的和为:"+sum1);
  12. do {
  13. if (0 == i2 % 2){ //在条件语句中,将数值写在前面是为了防止将==写成了=
  14. sum2 += i2;
  15. }
  16. i2++;
  17. } while(i2 <= 1000);
  18. System.out.println("用do-while,1到1000中,所有偶数的和为:"+sum2);
  19. }
  20. }

编译运行:

  1. $ javac SumOfEven.java
  2. $ java SumOfEven
  3. while11000中,所有偶数的和为:250500
  4. do-while11000中,所有偶数的和为:250500

5、for 语句

for 语法:

  1. for(循环变量初始化①; 循环条件②; 循环变量值操作③){
  2. 循环操作④
  3. }

for 相比 whiledo-while 语句结构更加简洁易读,它的执行顺序:

  1. 执行循环变量初始化部分(1),设置循环的初始状态,此部分在整个循环中只执行一次
  2. 进行循环条件的判断(2),如果条件为 true,则执行循环体内代码(4);如果为 false ,则直接退出循环。
  3. 执行循环变量值操作部分(3),对循环变量的值进行修改,然后进行下一次循环条件判断(2)。

整个循环的流程可以简化为:

  1. (1) -> [(2)->(4)->(3)] -> [(2)->(4)->(3)] -> ... => (2) 结果为 false, 退出循环。

for的流程

例如,计算 100 以内不能被 3 整除的数之和:

  1. int sum = 0; // 保存不能被3整除的数之和
  2. // 循环变量 i 初始值为 1 ,每执行一次对变量加 1,只要小于等于 100 就重复执行循环
  3. for (int i = 1;i<=100;i++) {
  4. // 变量 i 与 3 进行求模(取余),如果不等于 0 ,则表示不能被 3 整除
  5. if (i % 3 != 0) {
  6. sum = sum + i; // 累加求和
  7. }
  8. }
  9. System.out.println("1到100之间不能被3整除的数之和为:" + sum);

练习:编写代码,文件名为: SumOfEven.java,实现计算 1-1000 中所有偶数的和,并输出。

参考代码如下:

  1. public class SumOfEven {
  2. public static void main(String[] args){
  3. int sum = 0;
  4. for(int i = 1; i <= 1000; i++){
  5. if(0 == i % 2){
  6. sum += i;
  7. }
  8. }
  9. System.out.println("用for,1到1000中,所有偶数和为:"+sum);
  10. }
  11. }

编译运行:

  1. $ javac SumOfEven.java
  2. $ java SumOfEven
  3. for11000中,所有偶数和为:250500

6、跳转语句

break终止循环执行循环体下面的代码 return终止循环并且退出循环所在的方法 continue终止当前循环,进行下一次循环

break 关键字经常用在条件和循环语句中,用来跳出循环语句

continue关键字的作用是跳过循环体中剩余的语句执行下一次循环。 新建一个源代码文件Jump.java

  1. public class Jump{
  2. public static void main(String[] args){
  3. //break 练习
  4. for(int i = 1; i <= 10; i++){
  5. System.out.println("循环第"+i+"次");
  6. if(0 == i % 3){
  7. break;
  8. }
  9. if(0 == i % 5){
  10. System.out.println("我进来了!");
  11. }
  12. }
  13. //continue练习 打印10以内的所有奇数
  14. for(int i = 1; i <= 10; i++){
  15. if(0 == i % 2) //判断i是否为偶数
  16. continue; //通过continue结束本次循环
  17. System.out.println(i);
  18. }
  19. }
  20. }

编译运行:

  1. $ javac Jump.java
  2. $ java Jump
  3. 循环第1
  4. 循环第2
  5. 循环第3
  6. 1
  7. 3
  8. 5
  9. 7
  10. 9

练习:打印星期

新建一个源代码文件PrintWeek.java

你需要实现当输入 1-7 的数字时返回对应的星期:

  • 从控制台获取一个整型参数
  • 当输入数字 1 时输出今天是星期一
  • 当输入数字 2 时输出今天是星期二

以此类推

示例:

  1. 输入:
  2. 1
  3. 输出:
  4. 今天是星期一

提示:java.util.Scanner可以获取控制台输入。

  1. Scanner in =new Scanner(System.in);
  2. //获取int值
  3. int x=in.nextInt();

参考答案:

  1. import java.util.Scanner;
  2. public class PrintWeek {
  3. public static void main(String[] args) {
  4. Scanner in = new Scanner(System.in);
  5. //获取int值
  6. int x = in.nextInt();
  7. switch (x) {
  8. case 1:
  9. System.out.println("今天是星期一");
  10. break;
  11. case 2:
  12. System.out.println("今天是星期二");
  13. break;
  14. case 3:
  15. System.out.println("今天是星期三");
  16. break;
  17. case 4:
  18. System.out.println("今天是星期四");
  19. break;
  20. case 5:
  21. System.out.println("今天是星期五");
  22. break;
  23. case 6:
  24. System.out.println("今天是星期六");
  25. break;
  26. case 7:
  27. System.out.println("今天是星期天");
  28. break;
  29. }
  30. }
  31. }

以上为流程控制语句的整理笔记。

发表评论

表情:
评论列表 (有 0 条评论,324人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Jqueryeach循环

    jQuery中each类似于javascript的for循环  但不同于for循环的是在each里面不能使用break结束循环,也不能使用continue来结束本次循环,想

    相关 Jqueryeach循环

    jQuery中each类似于javascript的for循环  但不同于for循环的是在each里面不能使用break结束循环,也不能使用continue来结束本次循环,想

    相关 jsp循环

    JSP 中使用 JSTL 遍历循环时,当已满足条件时,不想再往下走后面的循环,这时如何跳出该循环呢? 本节将介绍该解决方案。 可以利用一个变量通过给它赋不同的值来判断是否继

    相关 循环

    之前写代码都是用for 循环,可以很好的使用break  直接跳出循环,或者continue跳出当前循环。 后来用了array.forEach 后也没有碰到需要跳出循环的操作