import java.util.Scanner;

public class Calendar {

public static void main(String[] args) {
// 万年历
int year;// 保存输入的年
int month;// 保存输入的月
System.out.println("请输入年份:");
Scanner key = new Scanner(System.in);
year = key.nextInt();
System.out.println("请输入月份:");
month = key.nextInt();
boolean flag;// 闰年保存true,平年保存false
int days = 0; // 保存指定月的天数
int totaldays = 0;// 保存总天数
// 计算输入的年是否是闰年
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
flag = true;
} else {
flag = false;
}
if (flag) {
System.out.println(year + "是闰年");
} else {
System.out.println(year + "不是闰年");
}
// 计算1900年1月1日至输入的年份的总天数
for (int i = 1900; i < year; i++) {
if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0)) {
totaldays += 366;
} else {
totaldays += 365;
}
}

// 计算输入月份之前的的天数和
for (int i = 1; i <=month; i++) {
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 (flag) {
days = 29;
} else {
days = 28;
}
break;
default:
System.out.println("输入的月份有误");
}
//输入月的天数保存到days中,但没有累加进去
if(i!=month){
totaldays += days;
}

}

// 计算星期几,其实就是前面制表符\t的个数。公式是:1+(总天数%7)
int week;
week= 1 + totaldays % 7;
if(week==7){
week=0;//代表星期天,0个\t
}
System.out.println("*******************万年历*******************************");
System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
//先打印\t
for (int i = 0; i < week; i++) {
System.out.print("\t");
}
for (int i = 1; i <=days; i++) {
System.out.print(i + "\t");
if ((i + week) % 7 == 0) {
System.out.println();
}
}

}

}

小JAVA大世界之万年历的更多相关文章

  1. 小JAVA大世界之程序建模跳蚤实验

    package com.chigoe;//房子类class House { private int m;// 保存行数 private int n;// 保存列数 private int[][] a; ...

  2. Java大世界

    "java越来越过份了." php狠狠的说,他转头看着C:"C哥,您可是前辈,java最近砸了我不少场子,你老再不出来管管,我怕他眼里就没有您了啊." C哥吸烟 ...

  3. HTML5 3D Google搜索 小盒子 大世界

    HTML5真是能让人想象万千,居然动起了Google搜索的主意,它利用HTML5技术将Google搜索放到了一个小盒子里,弄起了3D搜索.随着鼠标移动,HTML5 3D搜索盒子也就转动,非常立体.点击 ...

  4. docker --Dockerfile--最小java环境

    # AlpineLinux open jre 8FROM alpine:latest # Install cURLRUN echo -e "https://mirror.tuna.tsing ...

  5. 「小程序JAVA实战」微信小程序简介(一)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-01/ 一直想学习小程序,苦于比较忙,加班比较多没时间,其实这都是理由,很多时候习惯了搬砖,习惯了固 ...

  6. 微信小程序 教程及示例

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有,转载请联系作者获得授权.微信小程序正式公测, ...

  7. Java日志规范

    前言 一个在生产环境里运行的程序如果没有日志是很让维护者提心吊胆的,有太多杂乱又无意义的日志也是令人伤神.程序出现问题时候,从日志里如果发现不了问题可能的原因是很令人受挫的.本文想讨论的是如何在Jav ...

  8. [改善Java代码]线程优先级只使用三个等级

    线程的优先级(priority)决定了线程获得CPU运行的机会,优先级越高获得的运行机会越大,优先级越低获得的机会越小.Java的线程有10个级别(准确的说是11个级别,级别为0的线程是JVM,应用程 ...

  9. Java中的多线程总结(转)

      1.多线程概述 当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程.主要以下几个优点: 线程之间很容易实现共享内存 创建线程代价较小 Java语言内置多线程功能支持 2.线 ...

随机推荐

  1. Spring文件上传配置

    增加依赖jar包 <dependency> <groupId>commons-fileupload</groupId> <artifactId>comm ...

  2. 利用qmake生成Makefile文件

    在linux下写程序,免不了要写Makefile文件,用automake,总感觉比较麻烦,linux人喜欢做麻烦的事,以显得风格迥异. 其实用qmake生成Makefile文件相当简单. 1 装好qm ...

  3. beautifulsoup小节

    在beautifulsoup中,一个tag可能有很多个属性. tag <b class="boldest"> 有一个 “class” 的属性,值为 “boldest” ...

  4. webservice 接口通过 HTTP 获取数据

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ne ...

  5. C语言字符串拷贝

    C语言字符串拷贝利用指针操作,要清楚知道指针的指向 代码如下: #include <stdio.h> #include <assert.h> #include <stri ...

  6. C# 遍历文件夹下所有子文件夹中的文件,得到文件名

    假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中using System.Data;using System.Drawing;using System.Linq;using Syst ...

  7. Symmetric Difference

    function sym(args) { //return args; var arr = []; for(var i = 0; i < arguments.length; i++){ arr. ...

  8. eclipse部署web项目至本地的tomcat但在webapps中找不到

    一.发现问题 在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并 ...

  9. github简单使用教程

    github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.对于一般人来说公共仓库就已经足够了,而且我们也没多少代码来管理,O(∩_∩)O ...

  10. oracle10g、oracle client和plsql devement 三者之间的关系

    oracle10g是服务器,如果本机安装了oracle10g,没有必要安装oracle client,只要配置好DNS,就可以使用plsql devement连接     当然你也可以同时安装orac ...