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


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



相关文章
|
2月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
321 98
|
3月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
|
4月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
133 2
|
4月前
|
机器学习/深度学习 Java 编译器
解锁硬件潜能:Java向量化计算,性能飙升W倍!
编译优化中的机器相关优化主要包括指令选择、寄存器分配、窥孔优化等,发生在编译后端,需考虑目标平台的指令集、寄存器、SIMD支持等硬件特性。向量化计算利用SIMD技术,实现数据级并行,大幅提升性能,尤其适用于图像处理、机器学习等领域。Java通过自动向量化和显式向量API(JDK 22标准)支持该技术。
191 4
|
5月前
|
安全 Java API
Java 集合高级应用与实战技巧之高效运用方法及实战案例解析
本课程深入讲解Java集合的高级应用与实战技巧,涵盖Stream API、并行处理、Optional类、现代化Map操作、不可变集合、异步处理及高级排序等核心内容,结合丰富示例,助你掌握Java集合的高效运用,提升代码质量与开发效率。
258 0
|
5月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
344 0
|
5月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
142 0
|
5月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
343 14
|
6月前
|
缓存 算法 NoSQL
校招 Java 面试高频常见知识点深度解析与实战案例详细分享
《2025校招Java面试核心指南》总结了Java技术栈的最新考点,涵盖基础语法、并发编程和云原生技术三大维度: 现代Java特性:重点解析Java 17密封类、Record类型及响应式Stream API,通过电商案例演示函数式数据处理 并发革命:对比传统线程池与Java 21虚拟线程,详解Reactor模式在秒杀系统中的应用及背压机制 云原生实践:提供Spring Boot容器化部署方案,分析Spring WebFlux响应式编程和Redis Cluster缓存策略。
158 0