Java初学者作业——编写 Java 程序,在控制台中输入日期,计算该日期是对应年份的第几天。

简介: Java初学者作业——编写 Java 程序,在控制台中输入日期,计算该日期是对应年份的第几天。

需求说明:


编写 Java 程序,在控制台中输入日期,计算该日期是对应年份的第几天。

31.png


实现思路:


(1)声明变量 year、month和 date,用于存储日期中的年、月、日。


(2)声明变量 days,用于存储累加的天数。


(3)通过 Scanner 接收用户输入的日期,并为变量 year、month和 date 赋值。


(4)输入日期是当前输入年份的第几天的计算,包括两个部分天数的计算:1输入月份之前的所有月份天数的累加;2输入月份中已过天数累加。例如,输入日期2020年5月7日。先计算2020年1月份至4月份所有的天数,2020年1月对应的天数31天,2月份(2020年为闰年)对应的天数29天。3月份对应的天数31天,4月份天数30天,此时,不能包含五月的天数,2020年1月至4月所有的天数累加为121天。之后继续累加5月已过的天数7天,最终结果为2020年5月7日为当前年份的128天。


(5)根据天数累加计算规则,需要循环多次依次累加所输入月份之前的每个月份的天数,使用for循环结构实现。


①表达式。需要累加month之前的月份,声明变量i作为循环控制变量,根据运行效果,建议将i的初始值设置为1,所以可将for循环中3个表达式设置为:


表达式1:int i = 1
表达式2:i < month
表达式3:i++


②循环操作。使用switch结构,计算i对应月份的天数并进行累加,当i为2时,需要进行闰年判断。

(6)使用上一步计算的结果,继续累加输入月份已过的天数。

(7)使用 System.out.printlf(); 实现格式化输出运算结果。

 

实现代码:


import java.util.Scanner;
public class kkk {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    //年月日
    int year,month,date;
    int days = 0;   //天数
    //接收用户输入的年月日
    System.out.println("请输入日期:");
    year = sc.nextInt();
    month = sc.nextInt();
    date = sc.nextInt();
    //使用循环结构,依次累加每月的天数(不包括输入月份当中的月份)
    for(int i = 1; i < month; i++) {
      //使用switch结构,实现每月天数计算
      switch(i) {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12:
        days +=31;
        break;
      case 4:
      case 6:
      case 9:
      case 11:
        days +=30;
        break;
      case 2:
        //闰年判断
        if((year % 4 == 0 && year % 100!=0)||(year % 400 == 0)){
          days += 29;
          break;
        }else {
          days += 28;
          break;
        }
      }
    }
    //累加输入日期中当前月份已过的天数
    days += date;
    System.out.printf("%d年%d月%d日是当前年的第%d天",year,month,date,days);
    }
}
相关文章
|
1月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
131 0
|
1月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
298 98
|
2月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
121 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
137 1
|
2月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
124 0
|
2月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
194 16
|
3月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。

热门文章

最新文章