public class Test {

     /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义变量
int year, mouth;
int day = 0;
String cuowu;
Scanner sc = new Scanner(System.in);
int[] day1 = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int[] day2 = new int[] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int week, dayNum = 0; // 输出
System.out.println("*******************欢迎使用万年历****************\n");
System.out.print("请选择年份:");
// 判断是否输入我们需要的数据
while (true) {
if (sc.hasNextInt()) {
year = sc.nextInt();
if (year >= 1900) {
break;
} else {
System.out.print("输入数据不对请重新输入(1900年以后的年份)");
}
} else {
System.out.print("数据类型错误请重新输入");
cuowu = sc.next();
}
} System.out.println();
System.out.print("请选择月份:");
while (true) {
if (sc.hasNextInt()) {
mouth = sc.nextInt();
if (mouth > 0 && mouth < 13) {
break;
} else {
System.out.print("输入数据不对请重新输入(1~12)");
}
} else {
System.out.print("数据类型错误请重新输入");
cuowu = sc.next();
}
}
System.out.println();
// 计算该年距离1900年1月1日有几天
for (int i = 1900; i < year; i++) {
if ((i / 400 == 0) || (i / 4 == 0 && i / 100 != 0)) {
day += 366;
} else {
day += 365;
}
}
// System.out.println(day);
// 计算选择月份1日距离1900年1月1日有几天
for (int i = 1; i < mouth; i++) {
if ((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0))) {
day += day2[i - 1];
} else {
day += day1[i - 1];
}
}
// System.out.println(day);
// 计算该月第一天是星期几由于1900年1月1日是星期一,而我们打印从星期天开始,所以day+1
week = (day + 1) % 7;
// System.out.println(week);
// 赋值dayNum该月有几天
switch (mouth) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dayNum = 31;
break;
case 4:
case 6:
case 9:
case 11:
dayNum = 30;
break;
case 2:
if ((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0))) {
dayNum = 29;
} else {
dayNum = 28;
}
break;
default:
break;
}
// 输出
System.out.println("\t\t\t" + year + "年" + mouth + "月");
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for (int i = 0; i < week; i++) {
System.out.print("" + "\t");
}
for (int i = 1; i <= dayNum; i++) {
System.out.print(i + "\t");
if ((week + i) % 7 == 0) {
System.out.println();
}
} } }

java 面向过程实现万年历的更多相关文章

  1. JAVA面向过程VS面向对象

    面向过程 面向过程是一种自顶向下的编程,强调行为过程,可扩展性可维护性差. 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源. 单片机.嵌入式开发.Linux/Unix等一般 ...

  2. 面向过程部分 Java 和 C++ 的区别

    前言 Java 和 C++ 在面向过程部分区别并不大,但还是有的,本文罗列了这些区别. 在 Java 中: 1. 数据类型的范围和机器无关 2. 加上前缀 0b 可以表示二进制数,如 0b1001 就 ...

  3. 使用100%面向过程的思维方式来写java程序

    1.java是强制写class关键字的语言,不能有独立的函数游离在类外出现在文件中,这和python c++ 都不同,后面的都可以单独在类外写函数,所以java被称为是纯面向对象的语言,py和c++都 ...

  4. 1.1(java学习笔记) 面向过程与面向对象

    面向过程思考时,我们会先思考具体的步骤,第一步走什么,第二步做什么. 比如电脑新建文件夹,第一步:打开电脑 第二步:按下鼠标右键. 第三步:找到新建选项 第四步:点击新建选项下的文件夹 c语言是典型的 ...

  5. 四、java基础-面向过程_对象_类中可出现的因素

    1.面向过程和面向对象区别: 1)面向过程:开发一个应用程序.一个项目,必须先了解整个过程,了解各个步骤.模块间的因果关系,使的面向过程方式去开发程序时,代码和代码之间的关联程度是非常强.所以其中任何 ...

  6. 【JAVA】笔记(2)---面向过程与面向对象;类,对象;实例变量,引用;构造方法;

    面向过程与面向对象: 1.面向过程思想的典型栗子是C语言,C语言实现一个程序的流程是:在主函数中一步一步地罗列代码(定义子函数来罗列也是一样的道理),以此来实现我们想要的效果: 2.面向对象思想的典型 ...

  7. 【java基础】面向过程~面向对象

    相信大家都知道这两个东西,可是大家是如何知道的呢?我们又该如何区分这个东西到底是面向过程还是面向对象的呢? 那,我们首先就要知道什么是面向过程,什么是面向对象: 面向过程"(Procedur ...

  8. Java基础知识强化20:面向对象和面向过程的思想对比

    面向对象与面向过程的区别  1. 与面向对象编程思想相比较的,往往是面向过程的编程思想,其实在我来理解,两者并不冲突,原因是面向对象的编程也必须使用面向过程的思维来实现具体的功能,所以我认为,两者的区 ...

  9. 为什么大一先要学C语言(面向过程)再学C++或JAVA(面向对象)?

    面向对象和面向过程各有千秋 一.面向过程与面向对象对比  面向过程:强调的是每一个功能的步骤,有很多很多方法组成,这些方法相互调用,完成需求. 面向对象:强调的是对象,然后由对象去调用功能. 面向过程 ...

随机推荐

  1. Windows下模拟Linux开发

    1.背景 Linux环境下开发是大势所趋,也是开发者必须掌握的技能.然windows系统已深入人心,实在不想放弃windows下的成熟应用,因此可以在Windows上模拟一个Linux系统.这样就满足 ...

  2. js为鼠标添加右击事件

    <script language="javascript">  /*document.oncontextmenu=Youji;*/  //为当前文档添加鼠标右击事件,防 ...

  3. windows下体验Redis

    Redis 是一个高性能的key-value数据库, 使用内存作为主存储,数据访问速度非常快,当然它也提供了两种机制支持数据持久化存储.比较遗憾的是,Redis项目不直接支持Windows,Windo ...

  4. 把自己的程序打成jar包,让别人调用

     我们写程序的时候往往需要把自己的程序打包成jar包,给第三方调用.Eclipse让我们非常方便的可以导出jar包.但是当程序里需要用到res里的资源时,往往就会出现问题.因为统自动生成的R类如果被打 ...

  5. sqlite创建数据库问题

    1.<Sqlite权威指南>上说是这么创建数据库的: sqlite3 test.db 但是我写了这条语句之后出现了下面的情况(注:安装Sqlite过程见 ...) 我的sqlite3放在 ...

  6. (转)Div+CSS布局入门

    在网页制作中,有许多的术语,例如:CSS.HTML.DHTML.XHTML等等.在下面的文章中我们将会用到一些有关于HTML的基本知识,而在你学习这篇入门教程之前,请确定你已经具有了一定的HTML基础 ...

  7. Java数据结构漫谈-LinkedList

    同样是List的数据结构,LinkedList是使用了前后指针,指明节点的方式来表示链表的,这与之前介绍的ArrayList http://www.cnblogs.com/yakovchang/p/j ...

  8. C#在局域网中连接Liunx上的MySql数据库

    前期准备工作: 我所用的平台是VS2010和Ubuntu 14.04.3  LTS 一.由于MySql并没有集成在VS2010中所以要先安装MySQL Connector Net 6.9.8连接工具, ...

  9. 如何修改UIButton按下后默认的蓝色效果

    其实有两个简单方法:1.修改xib属性检查器Highlight Tint的值: 2.通过代码修改:btn.tintColor=[UIColor grayColor];或者[btn setTintCol ...

  10. DTO学习系列之AutoMapper(六)----EntityFramework和AutoMapper的婚后生活

    写在前面 我到底是什么? 越界的可怕 做好自己 后记 文章标题主要关键字:mapping DTOs to Entities,注意并不是“Entities to DTOs”,表示实体对象到DTO的转换, ...