Java基础篇_1.4——程序流程控制之选择结构if语句

程序流程控制

关于程序控制的关键字:

程序控制关键字
breakdowhilefor
continueswitchcasedefault
returninstanceofifelse

程序运行时的一个顺序,程序的结构分为:顺序结构、选择结构和循环结构。

  • 顺序结构是指按照代码的书写顺序执行。
  • 选择结构是指根据条件来选择执行对应代码。
  • 循环结构是指在一定的条件下重复执行某段代码。

1.continue、break、和return的区别是什么?

在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要 在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词:

  1. continue :指跳出当前的这一次循环,继续下一次循环。
  2. break :指跳出整个循环体,继续执行循环下面的语句。

return 用于跳出所在方法,结束该方法的运行。return 一般有两种用法:

  1. return; :直接使用 return 结束方法执行,用于没有返回值函数的方法
  2. return value; :return 一个特定值,用于有返回值函数的方法

2.选择结构

java 中选择结构有两种,分别是 if 和 switch

2.1 if

if 控制语句有三种不同形式,单分支、双分支、多分支结构

switch语句流程图_switch函数语句i_在word中如何画流程图_中国排行网

 

 

2.2 单分支

结构如下:

if (表达式){
    //代码块
}
if是关键字
表达式的结果必须是boolean类型,值是true或false
如果满足条件执行`{}`里的代码块,如果只有一句代码,可以省略`{}`但不推荐。
2.3 双分支

结构如下:

if(表达式){
       //代码块1
}else{
       //代码块2
}
如果表达式结果是true,执行代码块1
如果表达式结果是false,执行代码块2
2.4 多分支

结构如下:

if(表达式1){
    //代码块1
}else if(表达式2){
    //代码块2
}else{
    //代码块3
}
2.5 嵌套if

结构如下:

if(表达式1){
    if(表达式2){
        //代码块1
    }else{
        //代码块2
    }
}else{
     //代码块3
}
如果表达式1返回false,执行`else`中的代码块3
如果表达式1返回true,判断表达式2返回结果,如果表达式2返回true执行代码块1,返回false执行代码块2
2.6 switch
  • switch 语句(开关语句),用于实现多分支选择结构。
  • 结构如下:
switch(表达式){
    case 常量1:
        //语句1
        break;
    case 常量2:
        //语句2
    break;
        .....
    default:
        //语句3
        break;
}

switch中有switch、case、break、default等关键字

  • case用于从上到下依次与表达式进行匹配
  • break用终止switch执行
  • default用于当前switch中所有的case都没有匹配上表达式时执行。default语句可写可不写。
  • switch后的表达式支持 int 、 byte 、 short 、 char 、 Enum(枚举) 类型,在 jdk1.7(jdk7.0) 之后又增加了对 String 类型的支持
  • switch 支持多值匹配

注意:switch语句一定不要忘了写 break;

2.7 switch 新特性
  1. 箭头表达式 从Java12开始,switch语句的语法更简洁,保证只有一种路径会被执行,并且不需要break语句。

case语句简写成:case 常量 -> {表达式;} 如果表达式只有一句,{}可以省略

  1. case 可以匹配多个值:把相同case放一起,最后一个case写逻辑即可,使用逗号来分开多个值。

例如:

 /*
     * 编写一个程序,根据用户输入的月份(1 到 12),输出该月份所属的季节。
     * 假设春季是 3到 5 月,夏季是 6 到 8 月,秋季是 9 到 11 月,冬季是 12、1 和 2月。
     * 如果输入的月份超出了范围,输出"输入错误"。
     * */
    public void demo2() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入月份:");
        int mouth = scanner.nextInt();
        switch (mouth) {
            case 3, 4, 5 -> System.out.println(mouth + "月份是春季");
            case 6, 7, 8 -> System.out.println(mouth + "月份是夏季");
            case 9, 10, 11 -> System.out.println(mouth + "月份是秋季");
            case 12, 1, 2 -> System.out.println(mouth + "月份是冬季");
            default -> System.out.println("输入错误!");
        }
    }
  1. yield:就是如果需要复杂的语句,也是可以写多个语句,放到{……}里面,然后使用yield返回一个值作为switch语句的返回值。

3. 案例1——计算机程序

 /* 编写一个简单的计算器程序,要求用户输入两个数和操作符(+、-、*、/),然后根据操
     * 作符进行相应的运算,并输出结果。如果输入的运算符不是有效的运算符,则输出"无效的运算符"。
     * */
    public void demo1() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int num1 = scanner.nextInt();

        System.out.println("请输入操作符:");
        String m = scanner.next();

        System.out.println("请输入第二个数:");
        int num2 = scanner.nextInt();

        int result = switch (m) {
            case "+" -> {
                int res = num1 + num2;
                yield res;
            }
            case "-" -> {
                int res = num1 - num2;
                yield res;
            }
            case "*" -> {
                int res = num1 * num2;
                yield res;
            }
            case "/" -> {
                int res = num1 / num2;
                yield res;
            }
            default -> 0;
        };
        System.out.printf("%d" + m + "%d=%d", num1, num2, result);
    }

注意:上述代码switch中的default要有,以及switch语句结束之后的分号

4. 案例2——根据员工的工龄来计算年终奖金

//    编写一个程序,根据员工的工龄来计算年终奖金。奖金计算规则如下:
//    工龄小于等于5年,奖金为工资的5%
//    工龄大于5年且小于等于10年,奖金为工资的10%
//    工龄大于10年,奖金为工资的15%
//            (工资和工龄输入)
    public void demo4() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入员工的工龄:");
        int age = scanner.nextInt();
        System.out.println("请输入员工的工资:");
        int money = scanner.nextInt();
        // 初始年终奖
        int bouns = 100 ;
        if (age <= 5) {
            bouns += (int) (money * 0.05);
        } else if (age <= 10) {
            bouns += money * 0.1;
        }else {
            bouns += money * 0.15;
        }
        System.out.printf("工龄位%d的奖金为%d",age,bouns);
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-今非昔比°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值