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. JMeter简单的性能测试实例

    JMeter基础之——一个简单的性能测试 我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢.这一节创建一个简单的测试计划来使用这些元件.该计划对应的测试需求. 1)测试目标网站 ...

  2. LRU Cache的简单c++实现

    什么是 LRU LRU Cache是一个Cache的置换算法,含义是“最近最少使用”,把满足“最近最少使用”的数据从Cache中剔除出去,并且保证Cache中第一个数据是最近刚刚访问的,因为这样的数据 ...

  3. 五种常见的ASP.NET应用程序安全缺陷

    下面给出了五个例子,阐述如何按照上述建议增强应用程序的安全性.这些例子示范了代码中可能出现的缺陷,以及它们带来的安全风险.如何改写最少的代码来有效地降低攻击风险.1 篡改参数◎ 使用ASP.NET域验 ...

  4. Android -------- API等级

      API等级 Android版本 代号名称(基本上是按ABC命名排序的) 注释说明 1 Android 1.0     2 Android 1.1 Petit Four   3 Android 1. ...

  5. Javascript判断空对象

    最近在项目开发中判断空对象时,用了“!”运算符,结果程序出现bug,找了好久才找到原因. 其实自己范了一些低级错误,现在把自己经验总结一下: 在JavaScript中,任意JavaScript的值都可 ...

  6. oracle 存储过程返回结果集 (转载)

    好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集. 配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过 ...

  7. C语言中的结构体和C++中的结构体以及C++中类的区别

    c++中结构体可以定义一个函数 C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数. C++中的结构体和类的异同: 一. ...

  8. win8 Pro 64位在 UEFI模式下Ghost系统 备份 恢复

    一:在win8 安装U 盘中  1. 新建 “Ghost” 文件夹 2. 将下载的Ghost64.exe 文件拷贝到文件夹  二: 启动的时候 按下F12 选择 HDDUSB 1.Windows 安装 ...

  9. Qt sqlite

    原文地址:http://blog.csdn.net/NewBee520/article/details/8247236QSqlDatabase类实现了数据库连接的操作 QSqlQuery类用来执行SQ ...

  10. android之ListView,详细介绍实现步骤,举例,自定义listview适配器

    android之ListView,详细介绍实现步骤,举例,自定义listview适配器 本文来源于www.ifyao.com禁止转载!www.ifyao.com android中如何使用listVie ...