Java中的选择结构知识点及练习题

一.Java中的选择结构

1.if控制语句(if语句只能处理boolean类型的结果值)

(1)单分支if结构

 if(表达式){
     语句
 }

注意:表达式必须是布尔类型的表达式。

(2)结构流程图

image-20230802203911207

(3)双分支结构

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

(4)流程结构图

image-20230802204316408

(5)多分支if结构

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

(6)流程结构图

image-20230802204611095

2.switch语句(switch语句只能处理byte、short、int、char类型和枚举类型、string类型的数据比较)

(1)语句结构

写法一:

 switch(表达式){
     case 常量1:
         语句;
         break;
     case 常量2:
         语句;
         break;
         ……
     default:
         语句;
         break;
 }

写法二(Java7更新):

 switch(表达式){
 case 常量1-> 语句;
 case 常量2-> 语句;
 case 常量3-> 语句;
 case 常量4-> 语句;
 default -> 语句;
 }

注意:switch表达式可返回一个简单的值,用变量来接收;switch变成一个语句,后面要写分号。

(2)结构流程图

(3)yield可在switch内部返回一个简单的值。

二.练习

1.编写一个简单的计算器程序,要求用户输入两个数和操作符(+、-、*、/),然后根据操 作符进行相应的运算,并输出结果。如果输入的运算符不是有效的运算符,则输出"无效的 运算符"。

 package com.kfm.java;
 ​
 import java.util.Scanner;
 ​
 /**
  * @author wang
  */
 public class Doem1 {
     public static void main(String[] args) {
         /*
         编写一个简单的计算器程序,要求用户输入两个数和操作符(+、-、*、/),然后根据操
 作符进行相应的运算,并输出结果。如果输入的运算符不是有效的运算符,则输出"无效的
 运算符"。
         */
         Scanner input = new Scanner(System.in);
         System.out.println("请输入第一个数:");
         double num1 = input.nextDouble();
         System.out.println("请输入操作符(+、-、*、/):");
         String operator = input.next();
         System.out.println("请输入第二个数");
         double num2 = input.nextDouble();
 ​
         switch (operator) {
             case "+" -> {
                 double a = num1 + num2;
                 System.out.printf("计算结果为:%f \n", a);
             }
             case "-" -> {
                 double b = num1 - num2;
                 System.out.printf("计算结果为:%f \n", b);
             }
             case "*" -> {
                 double c = num1 * num2;
                 System.out.printf("计算结果为:%f \n", c);
             }
             case "/" -> {
                 double d = num1 / num2;
                 System.out.printf("计算结果位:%f \n", d);
             }
             default -> System.out.println("无效的运算符号");
         }
     }
 }
 ​

2.编写一个程序,根据用户输入的月份(1 到 12),输出该月份所属的季节。假设春季是 3 到 5 月,夏季是 6 到 8 月,秋季是 9 到 11 月,冬季是 12、1 和 2月。如果输入的月份超 出了范围,输出"输入错误"。

 package com.kfm.java;
 ​
 import java.util.Scanner;
 ​
 /**
  * @author wang
  */
 public class Doem2 {
     public static void main(String[] args) {
         /*
         编写一个程序,根据用户输入的月份(1 到 12),输出该月份所属的季节。假设春季是 3
 到 5 月,夏季是 6 到 8 月,秋季是 9 到 11 月,冬季是 12、1 和 2月。如果输入的月份超
 出了范围,输出"输入错误"。
          */
         Scanner input = new Scanner(System.in);
         System.out.println("请输入月份:");
         int month = input.nextInt();
 ​
         switch (month){
             case 3,4,5 -> System.out.println("春季");
             case 6,7,8 -> System.out.println("夏季");
             case 9,10,11 -> System.out.println("秋季");
             case 12,1,2 -> System.out.println("冬季");
             default -> System.out.println("输入错误");
         }
     }
 }
 ​

3.编写一个程序,根据用户输入的月份和日期,输出该日期所在的星座。以下是一个简单的 星座日期范围参考:

 package com.kfm.java;
 ​
 import java.util.Scanner;
 ​
 /**
  * @author wang
  */
 public class Doem3 {
     public static  void main(String[] args) {
         /*
         编写一个程序,根据用户输入的月份和日期,输出该日期所在的星座。
 水瓶座(1月20日到2月18日)
 双鱼座(2月19日到3月20日)
 白羊座(3月21日到4月19日)
 金牛座(4月20日到5月20日)
 双子座(5月21日到6月20日)
 巨蟹座(6月21日到7月22日)
 狮子座(7月23日到8月22日)
 处女座(8月23日到9月22日)
 天秤座(9月23日到10月22日)
 天蝎座(10月23日到11月21日)
 射手座(11月22日到12月21日)
 魔羯座(12月22日到1月19日)
          */
         Scanner input = new Scanner(System.in);
         System.out.println("请输入月份:");
         int month = input.nextInt();
         System.out.println("请输入日期:");
         int date = input.nextInt();
 ​
         if(month == 1 & date >= 20 | month == 2 & date <= 18){
             System.out.println("水瓶座");
         }else if(month == 2 & date >= 19 | month == 3 & date <= 20){
             System.out.println("双鱼座");
         }else if(month == 3 & date >= 21 | month == 4 & date <= 19){
             System.out.println("白羊座");
         }else if(month == 4 & date >= 20 | month == 5 & date <= 20){
             System.out.println("金牛座");
         }else if(month == 5 & date >= 21 | month == 6 & date <= 20){
             System.out.println("双子座");
         }else if(month == 6 & date >= 21 | month == 7 & date <= 22){
             System.out.println("巨蟹座");
         }else if(month == 7 & date >= 23 | month == 8 & date <= 22){
             System.out.println("狮子座");
         }else if(month == 8 & date >= 23 | month == 9 & date <= 22){
             System.out.println("处女座");
         }else if(month == 9 & date >= 23 | month == 10 & date <= 22){
             System.out.println("天枰座");
         }else if(month == 10 & date >= 23 | month == 11 & date <= 21){
             System.out.println("天蝎座");
         }else if(month == 11 & date >= 22 | month == 12 & date <= 21){
             System.out.println("射手座");
         }else if(month == 12 & date >= 22 | month == 1 & date <= 19){
             System.out.println("魔羯座");
         }else {
             System.out.println("输入日期不正确");
         }
 ​
 ​
     }
 }
 ​

4.编写一个程序,根据员工的工龄来计算年终奖金。奖金计算规则如下: 工龄小于等于5年,奖金为工资的5% 工龄大于5年且小于等于10年,奖金为工资的10% 工龄大于10年,奖金为工资的15% (工资和工龄输入)

 package com.kfm.java;
 ​
 import java.util.Scanner;
 ​
 /**
  * @author wang
  */
 public class Doem4 {
     public static void main(String[] args) {
         /*
         编写一个程序,根据员工的工龄来计算年终奖金。奖金计算规则如下:
         工龄小于等于5年,奖金为工资的5%
         工龄大于5年且小于等于10年,奖金为工资的10%
         工龄大于10年,奖金为工资的15%
         (工资和工龄输入)
          */
         Scanner input = new Scanner(System.in);
         System.out.println("请输入工资数额:");
         double wages = input.nextDouble();
         System.out.println("请输入工龄:");
         double seniority = input.nextDouble();
         double num;
 ​
         if (seniority <= 5){
             num = wages * 0.05;
             System.out.printf("年终奖金为:%f\n",num);
         }else if (seniority > 5 & seniority <= 10){
             num = wages * 0.1;
             System.out.printf("年终奖为:%f\n",num);
         }else if (seniority > 10){
             num = wages * 0.15;
             System.out.printf("年终奖为:%f\n",num);
         }
     }
 }
 ​

三.思考

1.思考 if 和 switch 各有什么特点,什么情况下用 if 更好?什么情况下 switch 更佳?两者如何选择

答:一般来说,如果需要根据不同的条件执行不同的代码块,可以使用if语句;如果需要根据不同的变量值执行不同的代码块,可以使用switch语句。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值