Java 常用流程控制语句使用【if-else、switch、while、do-while、for】







  • 前言:Java 中的常用流程控制语句主要包括:条件语句(if-else)、多分支语句(switch)、循环语句(for、while、do-while)以及跳转语句(break、continue、return)。这些语句用于控制代码的执行流程,以实现不同的逻辑功能。



条件语句(if-else)


if 结构语句

  • ①使用 if 语句的语法格式如下所示:

if (条件表达式) {
    语句块;
}

if 选择结构是根据条件判断之后再做处理的一种语法结构。表示“如果满足某种条件,就进行某种处理”;

条件表达式:条件表达式可以是任意一种逻辑表达式,最后返回的结果必须是一个布尔值 (true/false)。取值可以是一个单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。
如果条件为真,那么执行语句块;
如果条件为假,则语句块将被绕过而不被执行。

语句块:该语句块可以是一条语句也可以是多条语句。如果仅有一条语句,可省略条件语句中的大括号 { }。当从编程规范角度不要省略大括号,省略大括号会使程序的可读性变差。

其运行流程如下图 所示:

故屿


  • 示例:

public static void main(String[] args) {
    int num1 = 20;
    int num2 = 10;
    
    if (num1 > num2) {
    	// 输出结果为:num1 大于 num2
        System.out.println("num1 大于 num2");
    }
    if (num1 == num2) {
        System.out.println("num2 等于 num2");
    }
    if (num1 < num2) {
        System.out.println("num1 小于 num2");
    }
}

如上代码所示,单 if 语句仅能在满足条件时使用,而无法执行任何其他操作。
而结合 else 语句的 if 可以定义两个操作,此时的 if…else 语句表示“如果条件正确则执行一个操作,否则执行另一个操作”
结合 if-else 语句可减少代码的编写量,同时增强了程序的可读性。


if-else 结构语句

  • ②使用 if-else 条件语句的语法格式如下所示:

if (表达式) {
    语句块1;
} else {
    语句块2;
}

if-else 语句用于根据条件表达式的值来决定执行哪一段代码。如果条件为真(true),则执行 if 块中的代码;否则,执行 else 块中的代码(如果有的话)。其运行流程如下图 所示

故屿

  • 示例:

public static void main(String[] args) {
    int num1 = 20;
    int num2 = 10;

    // 如果 num1 大于 num2
    if (num1 > num2) {
    	// 打印输出结果为:num1 大于 num2
        System.out.println("num1 大于 num2");
    } else {
        // 否则就是 num1 小于 num2
        System.out.println("num1 小于 num2");
    }
}


if-else-if 结构语句

  • ③多条件 if-else-if 语句的语法格式如下所示:

if(判断条件1){
    语句块1;
} else if (判断条件2){
    语句块2;
} else if (判断条件n){
    语句块n;
} else {
    语句块n+1;
}

在使用 if-else-if 语句时,依次判断表达式的值:

当某个分支的条件表达式的值为 true 时,则执行该分支对应的语句块,然后跳到整个 if 语句之外继续执行程序;

如果所有的表达式均为 false,则执行语句块 n+1,然后继续执行后续程序,其运行流程如下图 所示

故屿

  • 示例:

public static void main(String[] args) {
    int num1 = 20;
    int num2 = 10;

    if (num1 == num2) { 
    	// 如果 num1 等于 num2
        System.out.println("num1 等于 num2");
    } else if (num1 > num2) { 
    	// 如果 num1 大于 num2,输出结果为:num1 大于 num2
        System.out.println("num1 大于 num2");
    } else { 
    	// 否则就是小于
        System.out.println("num1 小于 num2");
    }
}


如上代码所示,num1 和 num2 不满足 if 语句的 “num1 == num2” 条件;接着执行 else if 的 “num1 > num2” 条件,发现满足该条件判断并直接打印输出 “num1 大于 num2”,其最后 else 语句块将被绕过而不会被执行。


嵌套 if 结构语句

  • ④嵌套 if 语句的语法格式如下所示:

if(表达式1) {
    if(表达式2) {
        语句块1;
    } else {
        语句块2;
    }
} else {
    if(表达式3) {
        语句块3;
    } else if(表达式4) {
        语句块4;
    } else {
        if(表达式n) {
            语句块n;
        } else {
            语句块n+1;
        }
    }
}

if 语句的用法非常灵活,不仅可以单独使用,还可以在 if 语句里嵌套另一个 if 语句。同样,if…else 语句和 if…else if 语句中也可以嵌套另一个 if 结构的语句,有助于根据多个条件执行不同的代码块,以完成更深层次的流程控制判断语句。
其运行流程如下图 所示

故屿


  • 示例:

public class IfExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;

        // 外部 if 语句
        if (a > 5) {
        	// 打印输出结果为:a 大于 5
            System.out.println("a 大于 5");

            // 嵌套 if 语句
            if (b > 15) {
           	    // 打印输出结果为:b 大于 15
                System.out.println("b 大于 15");

                // 可以继续嵌套更多 if 语句
                if (c > 25) {
                	// 打印输出结果为:c 大于 25
                    System.out.println("c 大于 25");
                } else {
                    System.out.println("c 不大于 25");
                }
            } else {
                System.out.println("b 不大于 15");
            }
        } else {
            System.out.println("a 不大于 5");
        }
    }
}


如上代码所示,定义了三个整数变量 a、b 和 c,并使用两层内部嵌套 if 语句来检查它们的值。
首先,我们检查 a 是否大于 5。
如果是,则执行外部 if 语句的代码块,
并在其中嵌套另一个 if 语句来检查 b 是否大于 15。
根据 b 的值,我们再次嵌套一个 if 语句来检查 c 是否大于 25。
根据这些条件的不同组合,我们可以判断输出不同的结果。



  • 注:过多的 if 语句的层次嵌套会使代码难以阅读和维护。因此,在实际编程中,建议尽量避免过深的嵌套,并考虑使用其他控制结构(如 switch 语句或逻辑运算符)来简化代码



多分支语句(switch)



switch 语句

  • switch 语句的语法格式如下所示:

switch(表达式) {
    case1:
        语句块1;
        break;
    case2:
        语句块2;
        break;case 值n:
        语句块n;
        break;
    default:
        语句块 n+1;
    break;
}

如上语法中:switch (开关)、case (情况,情形)、default (默认)、break (停止) 四个都是 Java 的关键字。

switch 多分支语句用于根据变量的值来选择执行多个代码块中的一个。它通常用于处理多个离散的值。

当表达式与 case 后的选项值相同的时候,则就执行该 case 后选项的语句块

当表达式与 case 后的选项值没有一个相同的时候,则直接会执行 default 中的语句块

其运行流程如下图 所示

故屿


  • 示例:

public class SwitchExample {
    public static void main(String[] args) {
        // 定义一个整数变量 day
        System.out.println("请输入一个数字:");
    	Scanner sc = new Scanner(System.in);
    	int day= sc.nextInt();

        // 使用 switch 语句根据 day 的值执行不同的代码块
        switch (day) {
            case 1:
                System.out.println("今天是星期一");
                break;
            case 2:
                System.out.println("今天是星期二");
                break;
            case 3:
                System.out.println("今天是星期三");
                break;
            case 4:
            	// 如果输入4,则打印输出结果为:今天是星期四
                System.out.println("今天是星期四");
                break;
            case 5:
                System.out.println("今天是星期五");
                break;
            case 6:
                System.out.println("今天是星期六");
                break;
            case 7:
                System.out.println("今天是星期日");
                break;
            default:
            	// 如果输入 9,则打印输出结果为:输入有误,请输入 1 到 7 之间的数字
                System.out.println("输入有误,请输入 1 到 7 之间的数字");
        }
    }
}

注意事项:
1. switch 关键字后面小括号里的值要放一个整型变量或字符型变量。表达式为 byte,short,int,char,String 五种类型;
除了 String 以外,其他的四种类型都是用 == 比较出来的结果,String (或引用类型)使用的是 equals
3. 选项与选项之间(case, default)是并列关系,则摆放的时候可以乱序;
4. 每个 case 选项的代码块最后都需要加上 break 的关键词,保证单选;
5. switch…case 中对于 default 是可以省略的,且当所有的 case 都不满足的时候也会执行 default 中的语句块内容
6. 若要做多选,break 可以省略不写




循环语句(while、do-while、for)


循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体时,需要在合适的时候把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环。
循环语句用于重复执行一段代码,直到满足某个条件为止。
Java 中主要有三种循环语句:while、do-while 和 for。
另外在 Java 5 之后推出了 for-each 循环语句,for-each 循环是 for 循环的变形,它是专门为集合遍历而设计的 [后续详解]。


while 语句

  • ①使用 while 语句的语法格式如下所示:

while(条件表达式) {
    语句块(循环体);
}

条件表达式 (循环条件) 是一个有效的 boolean 表达式,它决定了是否执行循环体。while 的含义:
当条件表达式的值为 true 时,执行大括号中的语句块 (循环体),执行一次完毕后,再次检查表达式值如果还为 true,则再次执行大括号中的代码,直到不满足条件为 false 时跳出循环;
其运行流程如下图 所示

故屿


  • 示例:

public static void main(String[] args) {
	int i = 0;
	while (i <= 5) {
		// 当 i 的值大于 5 之后,循环便不再执行并退出循环,
		// 循环打印输出结果:0,1,2,3,4,5,
		System.out.print(i + ",");
	   // System.out.println("i的值为:" + i);
	    i++;
	}
}



do-while 语句

  • ②使用 do-while 语句的语法格式如下所示:

do {
    语句块;
}while(条件表达式);

如上语法执行过程是:首先执行一次循环操作,然后再判断 while 后面的条件表达式是否为 true,如果循环条件满足,循环继续执行,否则退出循环。while 语句后必须以分号表示循环结束;
区别:while 循环先判断,再执行。do-while 循环先执行,再判断。
条件表达式即使是假的情况下,while 循环都至少也要执行一次过程
其运行流程如下图 所示

故屿

  • 示例:

public static void main(String[] args) {
	int i = 0;
	do {
		// 循环打印输出结果:0,1,2,3,4,5,
		System.out.print(i + "," );
	    // System.out.println("i的值为:" + i);
	    i++;
	} while (i <= 5);
}



for 循环语句

  • ③使用 for 循环语句的语法格式如下所示:

for(条件表达式1; 条件表达式2; 条件表达式3) {
    语句块;
}

for 语句是一种在程序执行前就要先判断条件表达式是否为真的循环语句。假如条件表达式的结果为假,那么它的循环语句根本不会执行。
for 语句通常使用在知道循环次数的循环中,且用于在固定次数的迭代中执行代码块。
其运行流程如下图 所示

故屿


表达式形式功能示例
条件表达式 1赋值语句循环结构的初始部分,为循环变量赋初值 (初始化)int i = 1
条件表达式 2条件语句循环结构的循环条件 (布尔表达式)i > 5
条件表达式 3迭代语句,通常使用 ++ 或 – 运算符循环结构的迭代部分,通常用来修改循环变量的值 (更新)i++


  • 示例:

public static void main(String[] args) {
    int sum = 0;
    for (int i = 1; i < 6; i++) {
    	// 执行计算过程为:1+2+3+4+5
        sum = sum + i;
    }
    // 打印输出结果为:15
    System.out.println(sum);
}

for 循环的操作步骤
1. 初始值
2. 执行循环条件
3. 执行循环体
4. 执行步长
5. 又开始判断循环条件
6. ··· ···



增强型 for each 循环语句
  • ②使用增强 for 循环语句的语法格式如下所示:

for(类型 变量名:集合) {
    语句块;
}

如上语法中:

类型 (声明语句) :为声明新的局部变量,该变量的类型必须和数组 (集合) 元素的类型匹配。其作用域限定在循环语句块,其值与此时数组 (集合) 元素的值相等;
变量名:集合 (表达式):为要访问的数组名,或者是返回值为数组的方法。

“变量名”表示集合中的每一个元素;
“集合”是被遍历的集合对象或数组。
每执行一次循环语句,循环变量就读取集合中的一个元素。

其运行流程如下图 所示

故屿



  • 示例:

public class ForTest {

   public static void main(String args[]){
      int [] numbers = {10, 20, 30, 40, 50};

      for(int i : numbers ){
      	 // 打印输出结果为:10,20,30,40,50,
         System.out.print(i + "," );
      }
      String [] names ={"James", "Larry", "Tom", "Lacy"};
      for( String name : names ) {
      	 // 打印输出结果为:James,Larry,Tom,Lacy,
         System.out.print(name + ",");
      }
   }
}


区分:

①for 循环通过计数器可以实现复杂循环;但是,for each 循环无法指定遍历顺序,也无法获取数组的索引。

②for each 循环的变量名不再是计数器,而是直接对应到数组的每个元素。for each 循环可以直接遍历数组的每个元素。

③for each 循环和普通循环不同的是,它无须循环条件,无须循环迭代语句,这些部分都由系统来完成,for each 循环自动迭代数组的每个元素,当每个元素都被迭代一次后,for each 循环自动结束。




跳转语句(break、continue、return)



break 语句

  • ①break 语句:用于中断当前循环或 switch 语句的执行,跳出到最近的封闭代码块之外。


  • 示例:

public class BreakExample {

   public static void main(String args[]) {
      int [] numbers = {10, 20, 30, 40, 50};

      for(int i : numbers ) {
         if( i == 30 ) {
	      break;
         }
         // 打印输出结果:10  20
         System.out.println(i);
      }
   }
}


continue 语句

  • ②continue 语句:适用于任何循环控制结构中,作用是让程序立刻跳转到下一次循环的迭代。
    在for循环中,continue 语句使程序立即跳转到更新语句;
    在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。


  • 示例:

public class ContinueExample {

   public static void main(String args[]) {
      int [] numbers = {10, 20, 30, 40, 50};

      for(int i : numbers ) {
         if( i == 30 ) {
	      continue;
         }
         // 打印输出结果:10  20   40   50 
         System.out.println(i + "\t");
      }
   }
}


return 语句

  • ③return 语句:用于从当前方法中返回一个值,并结束该方法的执行。

···








扩展示例【五】:


一、使用条件语句(if-else)拓展示例【5】:

  1. 在控制台上分别输入三个不相同的数字,并比较谁是最大的

代码示例  待完善!



  1. 在控制台上输入月份,显示季节
  • 1~3 春季
  • 4~6 夏季
  • 7~9 秋季
  • 10~12 冬季


  1. 在控制台上输入成绩,显示成绩等级
  • 100 满分
  • 90~99 优秀
  • 80~89 良好
  • 70~79 中等
  • 60~69 及格
  • 60以下 不及格


  1. 输入自己的体重和身高计算身材的标准
    公式:体重/(身高*身高)
    体重:kg
    身高:m
分类BMI范围
偏瘦<=18.4
正常18.5~23.9
过重24~27.9
肥胖>=28.0


  1. 在控制台上需要输入一个数据,必须是3位数的,
    检测是否是百位 > 十位 > 个位 的数字,

如果是,则显示为降序数字,并按照从小到大的顺序进行显示,
如果不是,则直接显示结果该数字不是降序数字



二、使用多分支语句(switch)拓展示例【2】:

  1. 在控制台上输入星期(1~7),会显示是否有机票
    例如: 若输入 1,3,5,7 ;则打印显示有机票
    若输入 2,4,6 ;则打印显示无机票


2、在控制上输入分数,显示成绩等级,输入的分数需要是小数



三、使用循环语句(while)拓展示例【16】:

  1. 循环输出1~100的值
  2. 循环输出1~100中的偶数值
  3. 循环输出1~100中的能够整除4的数
  4. 循环输出1~100中能够被90整除的数
  5. 循环输出1~100中能够含有2的数
  6. 显示1~100以内的累加和
  7. 显示1~100以内的偶数和并显示偶数个数
  8. 显示1~100以内的累加和,要求能够整除4的数字做累加
  9. 显示1~100以内的累加和, 要求能够被90整除的数字做累加
  10. 显示1~100以内的累加和,要求数字中含有2的数字做累加
  11. 在控制台上分别输入两个数字,若后一个数字大于前一个数字的时候,则计算这两个数字之间的累加和
  12. 在控制台上分别输入年份,显示从1900年到输入的年份一共经过了多少年
  13. 在控制台上分别输入年份和月份,显示从1900年1月开始到输入的时间为止一共经过了多少月
  14. 通过控制台上优先设置账号和密码的值是多少,再通过分别输入账号和密码来判断输入的是否正确
    要求: 只有账号和密码都相同的时候,循环结束,不然一直循环
  15. 分别在控制台上输入年份、月份、日期,计算从1900年1月1日到输入的时间为止一共经过了多少天(需要考虑润平年)
  16. 循环输入一个不超过9位的整数(秒数),显示XX小时XX分钟XX秒,当输入88的时候,循环结束


四、使用循环语句(for)拓展示例【10】:

  1. 循环打印1~100的值
  2. 循环打印1~100的值,不含有5的数字
  3. 循环打印1~100的值,能够整除2、3、5
  4. 计算1~100以内的奇数和以及奇数个数
  5. 计算1~100以内的累加和,不能含有9的数字
  6. 水仙花数
    水仙花的含义: a*a*a+b*b*b+c*c*c = abc
    例如: 3 7 1
  7. 求1~100以内的质数和
  8. 从1900年1月1日到输入的日期一共经过了多少天
  9. 输入一个字符串,计算这个字符串的每个字符累加之后的值是多少?
  10. 在控制台上打印长为10,宽为6的矩形,通过*来表示


五、综合使用语句拓展示例【10】:

  1. 九九乘法表
  2. 打印一个直角等腰三角形 , 边长:50
  3. 定义一个数组,数据自定,长度为6,并打印该数组的数据
  4. 定义一个数组,长度为6, 数据随机获取(1~100),并把数据打印出来
  5. 在第四题的基础上,显示该数组的最大值和最小值
  6. 显示4位验证码,要求含有字母大小写以及0~9
  7. 按照第六题的题目要求,使用另一种方式完成
  8. 定义一个数组, 元素长度为3个账户的长度,3个账户的信息会存储在该数组中,账户中会有账号和密码两个信息,需在控制台上分别输入3个账户的信息,并保存在该数组中,且打印出来
  9. 随机获取两个数字(1~100),求这两个数字之间的累加和
  10. 随机获取两个数字(1~100),求这两个数字之间的奇数和,并求奇数个数













Note:
欢迎点赞,留言,转载请在文章页面明显位置给出原文链接
知者,感谢您在茫茫人海中阅读了我的文章
没有个性 哪来的签名!
详情请关注点我
持续更新中

扫一扫 有惊喜!
© 2024 05 - Guyu.com | 【版权所有 侵权必究】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值