任务3:成绩等级评定

文章目录

  • 任务3:成绩等级评定
    • 思路分析
      • 对百分制成绩评定等级
    • 编程实现
      • 采用并列式多分支结构
      • 采用嵌套式多分支结构
      • 采用延拓式多分支结构
      • 采用开关式多分支结构
    • 知识讲解
      • 多分支结构有四种处理方式
        • 并列式
        • 嵌套式
        • 延拓式
        • 开关式
    • 拓展练习
      • 确定给定日期是一年的第几天
      • 构建可进不可退的多级菜单系统
    • 总结提高

任务3:成绩等级评定

思路分析

对百分制成绩评定等级

(100,+∞):超出范围-out of scope
[90, 100]:优秀- excellent
[80.90):良好-good
[70, 80):中等-average
[60,70):及格- pass
[0,60):不及格-fail
(-∞.0):超出范围-out of scope

out of ……
out of sight,out of mind 眼不见,心不烦
out of love
breakup 分手
dumped by bf or gf 被男友或女友甩了
out of control

编程实现

采用并列式多分支结构

  • 创建子包
    p02子包里创建t03子包
    在这里插入图片描述

  • 创建类
    t03子包里创建JudgeScoreLevel01
    在这里插入图片描述

      package net.zengjinyi.p02.t03;
      
      import java.util.Scanner;
      
      /**
       * 功能:并列式评定成绩等级
       * 作者:曾谨仪
       * 日期:2024年05月08
       */
      public class JudgeScoreLevel01 {
          public static void main(String[] args) {
              //声明部分
              double score;
              String level;
              Scanner sc = new Scanner(System.in);
              
              //输入部分
              System.out.print("score = ");
              score = sc.nextDouble();
              
              //处理部分
              level = "";
              if (score > 100) level = "超出范围";
              if (score >= 90 && score <= 100) level = "优秀";
              if (score >= 80 && score <= 90) level = "良好";
              if (score >= 70 && score <= 80) level = "中等";
              if (score >= 60 && score <= 70) level = "及格";
              if (score >= 0 && score <= 60) level = "不及格";
              if (score < 0) level = "超出范围";
      
              //输出部分
              System.out.println("level = " + level);
          }
      }
    
  • 运行程序,查看结果
    (1)输入120
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c8eBwDRs-1720074215764)(https://i-blog.csdnimg.cn/direct/2636a0901e31440f82af3efb26682ef5.png)]

(2)输入99
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cznmGruR-1720074215766)(https://i-blog.csdnimg.cn/direct/f64645800e5b4cc8b572b9a94282f0e7.png)]

(3)输入85
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XjM07bLC-1720074215767)(https://i-blog.csdnimg.cn/direct/9ab5fff04bd942b49cbbd4781d3750ba.png)]

(4)输入72
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kUPGaseO-1720074215768)(https://i-blog.csdnimg.cn/direct/72a0b7a1e7b5412eb395038686264e54.png)]

(5)输入64
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hKGSxEtI-1720074215769)(https://i-blog.csdnimg.cn/direct/a4ce1b1d212e42a6b8a44d8ee0b2b244.png)]

(6)输入35
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gOzlBEGp-1720074215769)(https://i-blog.csdnimg.cn/direct/ead2deab24cb470fb2e616bc9b4fe763.png)]

(7)输入-20
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qM2oqc21-1720074215770)(https://i-blog.csdnimg.cn/direct/fd35701a6548448881f21710558d8df8.png)]

  • 优化程序
    两端超出范围的情况合二为一
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CakB52wK-1720074215771)(https://i-blog.csdnimg.cn/direct/fa11ae8aa0af4dfcbb46b9461bd2add7.png)]

采用嵌套式多分支结构

  • 分段方向:从大到小
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ov9xcw57-1720074215772)(https://i-blog.csdnimg.cn/direct/f823f14556074bcaafb52b7c2439e644.png)]
    t03子包里创建JudgeScoreLevel02
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jYHJzEKg-1720074215773)(https://i-blog.csdnimg.cn/direct/012b9a853002448490ce62e0b109e734.png)]

      package net.zengjinyi.p02.t03;
      
      import java.util.Scanner;
      
      /**
       * 功能:嵌套式评定成绩等级(从大到小)
       * 作者:曾谨仪
       * 日期:2024年05月08
       */
      public class JudgeScoreLevel02 {
          public static void main(String[] args) {
              //声明部分
              double score;
              String level;
              Scanner sc = new Scanner(System.in);
      
              //输入部分
              System.out.print("score = ");
              score = sc.nextDouble();
      
              //处理部分
              level = "";
              if (score > 100){
                  level = "超出范围";
              } else {
                  if (score >= 90){
                      level = "优秀";
                  }else {
                      if (score >= 80){
                          level = "良好";
                      }else {
                          if (score >= 70){
                              level = "中等";
                          }else {
                              if (score >= 60){
                                  level = "及格";
                              }else {
                                  if (score >= 0){
                                      level = "不及格";
                                  }else{
                                      level = "超出范围";
                                  }
                              }
                          }
                      }
                  }
              }
      
              //输出部分
              System.out.println("level = " + level);
      }
    

运行程序,查看结果
(1)输入120
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jKjXXnT5-1720074215774)(https://i-blog.csdnimg.cn/direct/f168fbb2e0f84f248e7ca0fbd37f1406.png)]

(2)输入99
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b73iVpn6-1720074215775)(https://i-blog.csdnimg.cn/direct/89a76cf1cc384919a36ad231f6571fb2.png)]

(3)输入85
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R0Bfk4sX-1720074215776)(https://i-blog.csdnimg.cn/direct/d62f6968720d4b5aaa6065a11304bb80.png)]

(4)输入72
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HbFGFa2I-1720074215776)(https://i-blog.csdnimg.cn/direct/218d2d6ea3ec4109a4e2e2361fe07a50.png)]

(5)输入64
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JwTzzsew-1720074215777)(https://i-blog.csdnimg.cn/direct/41fb3b0725ea4db0923b1c80df5530c2.png)]

(6)输入35
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1a3EZgtD-1720074215778)(https://i-blog.csdnimg.cn/direct/d86102156ee64a309879c509e287c742.png)]

(7)输入-20
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dU6hOERG-1720074215779)(https://i-blog.csdnimg.cn/direct/9b889919e49b4180858e84557e26ed1e.png)]

  • 分段方向:从小到大
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtUigiZv-1720074215780)(https://i-blog.csdnimg.cn/direct/7bb426315d424005bfde9473e3de3db0.png)]在t03子包里创建JudgeScoreLevel02_
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5itADBYH-1720074215781)(https://i-blog.csdnimg.cn/direct/3d66e5a90f6c4662868dbaf58d1bb488.png)]

      package net.zengjinyi.p02.t03;
      
      import java.util.Scanner;
      
      /**
       * 功能:嵌套式评定成绩等级(从小到大)
       * 作者:曾谨仪
       * 日期:2024年05月08
       */
      public class JudgeScoreLevel02_ {
          public static void main(String[] args) {
              //声明部分
              double score;
              String level;
              Scanner sc = new Scanner(System.in);
      
              //输入部分
              System.out.print("score = ");
              score = sc.nextDouble();
      
              //处理部分
              level = "";
              if (score < 0) {
                  level = "超出范围";
              } else {
                  if (score < 60) {
                      level = "不及格";
                  } else {
                      if (score < 70) {
                          level = "及格";
                      } else {
                          if (score < 80) {
                              level = "中等";
                          } else {
                              if (score < 90) {
                                  level = "良好";
                              } else {
                                  if (score <= 100) {
                                      level = "优秀";
                                  } else {
                                      level = "超出范围";
                                  }
                              }
                          }
                      }
                  }
              }
      
              //输出部分
              System.out.println("level = " + level);
          }
      }
    

运行程序,查看结果
输入75
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQxKme60-1720074215781)(https://i-blog.csdnimg.cn/direct/5dfde72232b94204a0f938290af767f5.png)]

采用延拓式多分支结构

  • 分段方向:从大到小[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8mPRJrv-1720074215782)(https://i-blog.csdnimg.cn/direct/a91d7bb3ca4c4815961a8e5aaf3046f2.png)]
    t03子包里创建JudgeScoreLevel03
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zJzn3IX7-1720074215783)(https://i-blog.csdnimg.cn/direct/92b448f1138a45d1b1e0f3ef752b4cda.png)]

      package net.zengjinyi.p02.t03;
      
      import java.util.Scanner;
      
      /**
       * 功能:延拓式评定成绩等级(从大到小)
       * 作者:曾谨仪
       * 日期:2024年05月08
       */
      public class JudgeScoreLevel03 {
          public static void main(String[] args) {
              //声明部分
              double score;
              String level;
              Scanner sc = new Scanner(System.in);
      
              //输入部分
              System.out.print("score = ");
              score = sc.nextDouble();
      
              //处理部分
              level = "";
             if (score > 100){
                 level = "超出范围";
             }else if (score >= 90){
                 level = "优秀";
             }else if (score >= 80){
                 level = "良好";
             }else if (score >= 70){
                 level = "中等";
             }else if (score >= 60){
                 level = "及格";
             }else if (score >= 0){
                 level = "不及格";
             }else {
                 level = "超出范围";
             }
      
              //输出部分
              System.out.println("level = " + level);
          }
      }
    

运行程序,查看结果
(1)输入120
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6so4vFqo-1720074215784)(https://i-blog.csdnimg.cn/direct/4bc09352d1894d3db1b5e4dd4d5dc87e.png)]

(2)输入99
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9WhanrAu-1720074215784)(https://i-blog.csdnimg.cn/direct/262791141b074ceaaf07aff97e501d37.png)]

(3)输入85
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QCFr0Itb-1720074215785)(https://i-blog.csdnimg.cn/direct/45f726ac70104c9cb69611cfe2e19d7d.png)]

(4)输入72
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ebcLt3x1-1720074215786)(https://i-blog.csdnimg.cn/direct/e2ecf6bbdb59469988786e15d65fe2bc.png)]

(5)输入64
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TcWNxCXj-1720074215787)(https://i-blog.csdnimg.cn/direct/10d78f00a01447dab7f66c9e2aa4bec1.png)]

(6)输入35
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y6xWgNIs-1720074215788)(https://i-blog.csdnimg.cn/direct/ecdfd9d1a4b14a7a85865e9b41083be8.png)]

(7)输入-20
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F7uYin0x-1720074215790)(https://i-blog.csdnimg.cn/direct/fd1e5f6f41bc497ea1f01dc3950ea782.png)]

  • 分段方向:从小到大
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ir8Iiqrs-1720074215790)(https://i-blog.csdnimg.cn/direct/196b56fd1405450a805d04a83d9f0da0.png)]
    t03子包里创建JudgeScoreLevel03_

      package net.zengjinyi.p02.t03;
      
      import java.util.Scanner;
      
      /**
       * 功能:延拓式评定成绩等级(从小到大)
       * 作者:曾谨仪
       * 日期:2024年05月08
       */
      public class JudgeScoreLevel03_ {
          public static void main(String[] args) {
              //声明部分
              double score;
              String level;
              Scanner sc = new Scanner(System.in);
      
              //输入部分
              System.out.print("score = ");
              score = sc.nextDouble();
      
              //处理部分
              level = "";
              if (score < 0){
                  level = "超出范围";
              }else if (score < 60){
                  level = "不及格";
              }else if (score < 70){
                  level = "及格";
              }else if (score < 80){
                  level = "中等";
              }else if (score < 90){
                  level = "良好";
              }else if (score <= 100){
                  level = "优秀";
              }else {
                  level = "超出范围";
              }
      
              //输出部分
              System.out.println("level = " + level);
          }
      }
    

运行程序,查看结果
输入75
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M3xzunHs-1720074215791)(https://i-blog.csdnimg.cn/direct/8a6bf7eca235492b8bd909af5062278a.png)]

采用开关式多分支结构

  • 思路分析
     因为switch多分支结构只能处理离散值,所以关键点在于将成绩变量取整之后再除以10,以便将各个分数段转换成离散的整数值,这样才能用开关式多分支结构来处理
     100分与(100,110),取整后除 10,结果都是10,纯粹用switch结构就搞不定,因此先得用双分支结构将超出范围的(100,110)给排除掉。
     0分与(-10,0),取整之后除以10,结果都是0,純粹用switch结构也搞不定,因此先得用双分支结构特超出范围的(-10,0)给排除掉。

  • 代码实现
    t03子包里创建JudgeScoreLevel04
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PNZHCEd2-1720074215792)(https://i-blog.csdnimg.cn/direct/483a97349e3847f5b666911decc16dc6.png)]

      package net.zengjinyi.p02.t03;
      
      import java.util.Scanner;
      
      /**
       * 功能:开关式多分支评定成绩等级
       * 作者:曾谨仪
       * 日期:2024年05月08
       */
      public class JudgeScoreLevel04 {
          public static void main(String[] args) {
              //声明部分
              double score;
              String level;
              Scanner sc = new Scanner(System.in);
      
              //输入部分
              System.out.print("score = ");
              score = sc.nextDouble();
      
              //处理部分
              level = "";
              if (score < 0 || score > 100){
                  level = "超出范围";
              }else {
                  switch (((int)score) / 10){
                      case 10:
                      case 9:
                          level = "优秀";
                          break;
                      case 8:
                          level = "良好";
                          break;
                      case 7:
                          level = "中等";
                          break;
                      case 6:
                          level = "及格";
                          break;
                      default:
                          level = "不及格";
                  }
              }
      
      
              //输出部分
              System.out.println("level = " + level);
      
          }
      }
    

运行程序,查看结果
(1)输入120
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rk9DEism-1720074215793)(https://i-blog.csdnimg.cn/direct/bbde02dbe2c64c9ea5a063e0a6717b16.png)]

(2)输入99
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MbZgT8IV-1720074215795)(https://i-blog.csdnimg.cn/direct/03a4e17d537a4eb6aa83e8b93e8f31b7.png)]

(3)输入85
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AtTeThFZ-1720074215796)(https://i-blog.csdnimg.cn/direct/cec99b7c89884e3086b59ba6efa3807a.png)]

(4)输入72
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TdDklH79-1720074215797)(https://i-blog.csdnimg.cn/direct/90e58696888c47dea37e42e19db71609.png)]

(5)输入64
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NvJ5Jjq2-1720074215798)(https://i-blog.csdnimg.cn/direct/f668de5dccea4479b6cda35933136f4c.png)]

(6)输入35
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o3oTdeD3-1720074215799)(https://i-blog.csdnimg.cn/direct/36ccfed8a8114b2c8d346039a3b3cae6.png)]

(7)输入-20
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WjfHW7Um-1720074215800)(https://i-blog.csdnimg.cn/direct/8aa5f09e35a14bbfaf418057a884ac28.png)]

知识讲解

多分支结构有四种处理方式

并列式
if (条件1) {
    语句组1
}

if (条件2) {
    语句组2
}
……
if (条件n) {
    语句组n
}

并列式多分支结构,优点是易于理解,但缺点是效率低(思考一下,为什么效率低)

嵌套式
if (条件) {
	if (条件1) {
   		语句组1
	} else {
  		 ……
	}
} else {
	if (条件2) {
   		语句组2
	} else {
   		……
	}
}

嵌套式多分支结构,优点是层次分明、效率高,但缺点是嵌套层次太多时显得很繁。

延拓式
if (条件1) {
	语句组1
} else if (条件2) {
    语句组2
} 
……
} else if (条件n) {
    语句组n
} else {
    语句组n+1
}

延拓式多分支结构,优点是只有一层,并且效率高。希望同学们务必掌握这一种多分支处理方式。

开关式
switch (测试表达式) {
    case 值1:
        语句组1
        break;
    case 值2:
        语句组2
        break;
     ……
    case 值n:
        语句组n
        break;
    default:
        语句组n+1
}

开关式多分支结构,优点是书写简洁,并且效率高,但缺点是只能针对离散型的情况进行处理。

拓展练习

确定给定日期是一年的第几天

  • 思路分析
    首先,通过Scanner 获取用户输入的年、月、日。然后,判断输入年份是否为国年,以确定2月天数。接著,使用switch语句根据月份累加天数,考虑国年情况。将累加天数与输入日相加。得到一年中的天数。最后,异常处理礁保输入有效,并输出结果。程序结束时释放咨源。

  • 代码实现
    (1)不用数组
    t03子包里创建 DayOfYear01
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vHD4lnlz-1720074215801)(https://i-blog.csdnimg.cn/direct/fdf13fa6e77346319bad93690618150c.png)]

      package net.zengjinyi.p02.t03;
      
      import com.sun.jdi.connect.IllegalConnectorArgumentsException;
      import net.zengjinyi.p02.t01.BufferedReaderDemo;
      
      import java.util.Scanner;
      
      /**
       * 功能:计算输入日期是一年中的第几天
       * 作者:曾谨仪
       * 日期:2024年05月08
       */
      public class DayOfYear01 {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              try {
                  //输入部分
                  System.out.print("year = ");
                  int year = sc.nextInt();
                  System.out.print("month = ");
                  int month = sc.nextInt();
                  System.out.print("day = ");
                  int day = sc.nextInt();
      
                  //计算输入日期是一年中的第几天
                  int dayOfYear = getDayOfYear(year,month,day);
      
                  //输出部分
                  System.out.println(year + "年" + month +"月" + day + "日是该年的第" + dayOfYear + "天~");
              }catch (Exception e){
                  System.out.println("输入有误,请检查后重新输入。");
              }finally {
                  sc.close();
              }
          }
      
          //判断是否为闰年
          private static boolean isLeapYear(int year) {
              return (year % 4 == 0 && year % 100 != 0) ||(year % 400 == 0);
          }
      
          //计算输入日期是一年中的第几天
          private static int getDayOfYear(int year,int month,int day){
              int sum = 0;
              boolean isLeap = isLeapYear(year);
              //根据月份累加天数
              switch (month) {
                  case 1:
                      sum = 0;
                      break;
                  case 2:
                      sum = 31;
                      break;
                  case 3:
                      sum = 31 + (isLeap ? 29 : 28);
                      break;
                  case 4:
                      sum = 31 + (isLeap ? 29 : 28) + 31;
                      break;
                  case 5:
                      sum = 31 + (isLeap ? 29 : 28) + 31 + 30;
                      break;
                  case 6:
                      sum = 31 + (isLeap ? 29 : 28) + 31 + 30 + 31;
                      break;
                  case 7:
                      sum = 31 + (isLeap ? 29 : 28) + 31 + 30 + 31 + 30;
                      break;
                  case 8:
                      sum = 31 + (isLeap ? 29 : 28) + 31 + 30 + 31 + 31;
                      break;
                  case 9:
                      sum = 31 + (isLeap ? 29 : 28) + 31 + 30 + 31 + 31 + 30;
                      break;
                  case 10:
                      sum = 31 + (isLeap ? 29 : 28) + 31 + 30 + 31 + 31 + 30 + 31;
                      break;
                  case 11:
                      sum = 31 + (isLeap ? 29 : 28) + 31 + 30 + 31 + 31 + 30 + 31 + 30;
                      break;
                  case 12:
                      sum = 31 + (isLeap ? 29 : 28) + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31;
                      break;
                  default:
                      throw new IllegalArgumentException("月份必须在1到12之间。");
              }
              //加上当前月份的天数
              return sum + day;
          }
      }
    

运行程序,查看结果
输入2024 4 25
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4eudHMU-1720074215801)(https://i-blog.csdnimg.cn/direct/dae12aec81e4448e94a8dd8205e58e21.png)]

输入2025 4 25
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h9CSARyG-1720074215802)(https://i-blog.csdnimg.cn/direct/25b1438a58414fcca9b148c22132c53f.png)]

(2)使用数组
t03子包里创建 DayOfYear02
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MIQ2P8aC-1720074215803)(https://i-blog.csdnimg.cn/direct/0d935a21d8b94eb1b7d2e7b1523bc9ae.png)]

	package net.zengjinyi.p02.t03;
	
	import java.util.Scanner;
	
	/**
	 * 功能:计算输入日期是一年中的第几天
	 * 作者:曾谨仪
	 * 日期:2024年05月08
	 */
	public class DayOfYear02 {
	    public static void main(String[] args) {
	        Scanner sc = new Scanner(System.in);
	        try {
	            //输入部分
	            System.out.print("year = ");
	            int year = sc.nextInt();
	            System.out.print("month = ");
	            int month = sc.nextInt();
	            System.out.print("day = ");
	            int day = sc.nextInt();
	
	            //计算每个月的天数
	            int[] dayslnMonth = getDayslnMonth(year);
	
	            //计算输入日期是一年中的第几天
	            int dayOfYear = getDayOfYear(dayslnMonth,month,day);
	
	            //输出部分
	            System.out.println(year + "年" + month +"月" + day + "日是该年的第" + dayOfYear + "天~");
	        }catch (Exception e){
	            System.out.println("输入有误,请检查后重新输入。");
	        }finally {
	            sc.close();
	        }
	    }
	    //判断是否为闰年
	    private static boolean isLeapYear(int year) {
	        return (year % 4 == 0 && year % 100 != 0) ||(year % 400 == 0);
	    }
	
	    // 获取每个月的天数
	    private static int[] getDayslnMonth(int year){
	        int[] dayslnMonth = {0,31,28,31,30,31,30,31,31,30,31,30,31};
	        if (isLeapYear(year)){
	            dayslnMonth[2] = 29;
	        }
	        return dayslnMonth;
	    }
	
	    //计算输入日期是一年中的第几天
	    private static int getDayOfYear(int[] dayslnMonth,int month,int day) {
	        int sum = 0;
	        for (int i = 1; i < month; i++) {
	            sum += dayslnMonth[i];
	        }
	        return sum + day;
	    }
	}

运行程序,查看结果
输入2024 4 25
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KciMjzvh-1720074215805)(https://i-blog.csdnimg.cn/direct/191c6cb0bbd947deabe4a163813b0960.png)]

输入2025 4 25
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ePJwTwmf-1720074215806)(https://i-blog.csdnimg.cn/direct/0bea830ccb474278aab143a1d12317e9.png)]

(3)使用日期和日历类
t03子包里创建 DayOfYear03
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lGftdjSA-1720074215807)(https://i-blog.csdnimg.cn/direct/207211a6bfde4e838239249ac27d42a4.png)]

	package net.zengjinyi.p02.t03;
	
	import java.util.Calendar;
	import java.util.Date;
	import java.util.Scanner;
	
	/**
	 * 功能:计算输入日期是一年中的第几天
	 * 作者:曾谨仪
	 * 日期:2024年05月08
	 */
	public class DayOfYear03 {
	    public static void main(String[] args) {
	        //声明部分
	        int year,month,day,dayOfYear;
	        Date date;
	        Calendar calendar;
	        Scanner sc = new Scanner(System.in);
	
	        //输入部分
	        System.out.print("year = ");
	        year = sc.nextInt();
	        System.out.print("month = ");
	        month = sc.nextInt();
	        System.out.print("day = ");
	        day = sc.nextInt();
	
	        try {
	            //处理部分
	            date = new Date(year,month - 1,day);
	            calendar = Calendar.getInstance();
	            calendar.setTime(date);
	            dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); //计算输入日期是一年中的第几天
	
	            //输出部分
	            System.out.println(year + "年" + month +"月" + day + "日是该年的第" + dayOfYear + "天~");
	        }catch (Exception e){
	            System.out.println("输入有误,请检查后重新输入。");
	        }finally {
	            sc.close();
	        }
	    }
	}

运行程序,查看结果
输入2024 4 25
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-altfjR77-1720074215808)(https://i-blog.csdnimg.cn/direct/ab418a3c1cb14223b2c78fb7a4c89294.png)]

输入2025 4 25
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9LC2juzu-1720074215809)(https://i-blog.csdnimg.cn/direct/6226a7dbbac64879a0f401fe0ba8f7ec.png)]

构建可进不可退的多级菜单系统

t03子包里创建mingp
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6LmoC0j-1720074215810)(https://i-blog.csdnimg.cn/direct/afdb6e9e141c4061a17c4f6a46a2f76a.png)]

package net.zengjinyi.p02.t03;

import java.util.Scanner;

/**
 * 功能:学生名片管理
 * 作者:曾谨仪
 * 日期:2024年05月09
 */
public class mingp {
    public static void main(String[] args) {

        int choice;
        Scanner sc = new Scanner(System.in);

        System.out.println("名片管理系统");
        System.out.println("==========");
        System.out.println("1.登录");
        System.out.println("2.退出");
        System.out.println("==========");

        //输入部分
        System.out.print("输入菜单编号[1,2]:");
        choice = sc.nextInt();
        switch (choice) {
            case 1:
                customer_management(); // 调用登录系统的方法
                break;
            case 2:
                System.out.println("谢谢使用!");
                System.exit(0); // 退出应用程序
                break;
            default:
                System.err.println("输入菜单号错误!");
                break;
        }
    }
    private static void customer_management() {
        int choice; // 菜单选择号
        Scanner sc = new Scanner(System.in); // 扫描器

        // 显示客户信息管理菜单
        System.out.println("=========名片管理=========");
        System.out.println(" 1. 添加名片");
        System.out.println(" 2. 修改名片");
        System.out.println(" 3. 查询名片");
        System.out.println(" 4. 删除名片");
        System.out.println("==================");
        System.out.print("输入菜单号(1,2,3,4):");
        choice = sc.nextInt();
        switch (choice) {
            case 1:
                System.out.println("执行添加名片功能~");;
                break;
            case 2:
                System.out.println("执行修改名片功能~");
                break;
            case 3:
                System.out.println("执行查询名片功能~");
                break;
            case 4:
                System.out.println("执行删除名片功能~");
                break;
            default:
                System.err.println("输入菜单号错误!");
                break;
        }
    }
}

运行程序,查看结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GFJKTgcT-1720074215811)(https://i-blog.csdnimg.cn/direct/2cb86ad593324ae78cda42e9179de502.png)]

总结提高

  多分支选择结构有四种实现方式,我们可以根据实际情况选择自己喜欢的方式来解决问题。个人比较喜欢延拓式多分支结构的实现方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值