文章目录
- 任务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)]
总结提高
多分支选择结构有四种实现方式,我们可以根据实际情况选择自己喜欢的方式来解决问题。个人比较喜欢延拓式多分支结构的实现方式。