Java 案例练习:编写 Java 程序,输入年份和月份,使用 switch 结构计算对应月份的天数。月份为 1、3、5、7、8、10、12 时,天数为 31 天。月份为 4、6、9、11 时,天数为

简介: Java 案例练习:编写 Java 程序,输入年份和月份,使用 switch 结构计算对应月份的天数。月份为 1、3、5、7、8、10、12 时,天数为 31 天。月份为 4、6、9、11 时,天数为

文章目录


image.png


一、练习题目

编写 Java 程序,输入年份和月份,使用 switch 结构计算对应月份的天数。

月份为 1、3、5、7、8、10、12 时,天数为 31 天。

月份为 4、6、9、11 时,天数为 30 天。

月份为 2 时,若为闰年,天数为 29 天,否则,天数为 28 天。

要求实现程序如下图所示:

image.png

二、使用 switch 语句实现代码

我们使用 switch 语句实现代码如下:

package rjxy2019_java_demo;
import java.util.Scanner;
public class SwitchWithDays {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter a year:");
    int year = input.nextInt();
    System.out.println("Please enter a month:");
    int month = input.nextInt();
    int day = 0;
    boolean isLeapYear = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
    switch(month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:day = 31;break;
    case 4:
    case 6:
    case 9:
    case 11:day = 30;break;
    case 2:if(isLeapYear == true) day = 29;
    else day = 28;break;
    default:System.out.println("Error:invalid input");
    System.exit(1);
    }
    System.out.println(year + "年" + month + "月一共" + day + "天");
  }
}

验证,当输入为 2009 年 2 月时,如下图所示:

image.png

说明System.exit(status)是在System类中定义的,调用这个方法可以终止程序。

参数status为 0 表示程序正常结束。一个非 0 的状态代码表示非正常结束。

例如,我们输入月份为 13 时,程序终止并输出报错信息,如下图所示:

image.png

三、将代码改写回 if else 的选择结构

我们将代码改写回 if else 的选择结构,代码如下:

package rjxy2019_java_demo;
import java.util.Scanner;
public class IfElseWithDays {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter a year:");
    int year = input.nextInt();
    System.out.println("Please enter a month:");
    int month = input.nextInt();
    int day = 0;
    boolean isLeapYear = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
    if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month ==12) day = 31;
    else{
      if(month == 4 || month == 6 || month == 9 || month == 11) day = 30;
      else {
        if(month == 2) {
          if(isLeapYear == true) day = 29;
          else day = 28;
        }
        else {
          System.out.println("Error:invalid input");
          System.exit(1);
        }
      }
    }
    System.out.println(year + "年" + month + "月一共" + day + "天");
  }
}

输出结果无误,如下图所示:

image.png


image.png


我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!



相关文章
|
6天前
|
运维 Java
Java版HIS系统 云HIS系统 云HIS源码 结构简洁、代码规范易阅读
云HIS系统分为两个大的系统,一个是基层卫生健康云综合管理系统,另一个是基层卫生健康云业务系统。基层卫生健康云综合管理系统由运营商、开发商和监管机构使用,用来进行运营管理、运维管理和综合监管。基层卫生健康云业务系统由基层医院使用,用来支撑医院各类业务运转。
30 5
|
30天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
1月前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
22 1
|
14天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
35 3
|
24天前
|
SQL 设计模式 安全
Java单例模式几种写法以及代码案例拿来直接使用
Java单例模式几种写法以及代码案例拿来直接使用
32 0
|
1月前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
15 1
|
2天前
|
Java
网页运行java程序cheerpj
网页运行java程序cheerpj
26 0
|
8天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
13天前
|
存储 Java
模式匹配魔法:Java 21中switch语句的巨大进化
模式匹配魔法:Java 21中switch语句的巨大进化
12 0
|
13天前
|
Java
Java 14 强势登场:Switch 表达式的进化之路
Java 14 强势登场:Switch 表达式的进化之路
18 0