打个日历,写了半天,感情水平真菜, 不过主要是不会数组,明天一定要把数组看了

package demo;
import java.util.Scanner;
public class Demo {
/*
* 需求:输入一个年份,以及这年的第一天的星期数(数字表示, 0表示星期日,1表示星期1……)
* 要求打印这一年每个月的日历
*
* 分析:只要知道这个月的天数daysOfMonth和第一天的星期数startDay就可以打印出这个月的日历
* startDay的数值即打印这个月的日历的时候再第一行打印的空格数 ,然后逐个打印这个月的每一天
* 根据(startDay+daysOfMonth)算出下个月的第一天的星期数
* 再打印……
* */
public static void main(String[] args){
System.out.print("Enter full year:");
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
System.out.print("Enter the day of first day:");
int startDay = sc.nextInt();
int month = 0, dayOfMonth = 0;
String monthName = "";
for(month = 1; month <= 12; month++){
//确定每个月的天数
switch(month){
case 1: case 3: case 5: case 7:case 8: case 10:
case 12:
dayOfMonth = 31; break;
case 2:
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
dayOfMonth = 29;
else
dayOfMonth = 28; break;
case 4: case 6: case 9:
case 11:
dayOfMonth = 30;
}
//确定每个月的名字
switch(month){
case 1: monthName = "January"; break;
case 2: monthName = "February"; break;
case 3: monthName = "March"; break;
case 4: monthName = "April"; break;
case 5: monthName = "May"; break;
case 6: monthName = "June"; break;
case 7: monthName = "July"; break;
case 8: monthName = "August"; break;
case 9: monthName = "September"; break;
case 10: monthName = "October"; break;
case 11: monthName = "November"; break;
case 12: monthName = "December"; break;
}
//打印这个月的日历
System.out.println("\t "+ monthName +" "+year);
print(dayOfMonth, startDay);
startDay = (dayOfMonth+startDay) % 7;
}
}
public static void print(int dayOfMonth, int startDay){
System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
System.out.println("----------------------------");
for(int i = 0; i < startDay; i++)
System.out.print(" ");
for(int i = 1; i <= dayOfMonth; i++){
System.out.printf("%4d", i); //原来可以用printf啊!!!哈哈哈~~~~~
if((i + startDay) % 7 == 0)
System.out.println();
}
System.out.println();
} }

java打印日历的更多相关文章

  1. 使用java 打印日历

    package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { publi ...

  2. 用java打印日历

    来自<java核心技术卷一> /** * Created by wangbin10 on 2019/1/3. * 打印当月日历 */ public class CalendarTest { ...

  3. Python学习实践-----打印日历

    使用python语言实现在控制台打印日历 输入年.月.日 输出对应日历,指定的日数输出为'--' 程序没有做严格的输入验证,故输入整数即可. 以下为没有优化的源码: print_calendar.py ...

  4. Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)

    Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...

  5. 关于这两天研究Java打印pdf方法的记录

    这两天在研究Java调用打印机打印PDF文件的方法,学到了不少东西,特别来记录一下. 关于Java打印网上最多的而且也是Java正统的打印方法就是使用PrintService,一套比較标准的打印代码例 ...

  6. java打印正金字塔,倒金字塔和“水影”金字塔

    java打印正金字塔,倒金字塔和"水影"金字塔 --------原创文章,若要转载,请注明出处   小小少年 闲来无事,想起自己初学java的时候做的经典的无非就是打印出一些有意思 ...

  7. Java打印

    Java打印 import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Gra ...

  8. Oracle打印日历功能

    Oracle用SQL打印日历 1.1  打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D,  ...

  9. Java 打印程序设计实例

    3.1 打印文本 3.1.1 应用场景 假设我们需要打印一个窗体的某个文本编辑域(可能只有几行,也可能包含多页)的内容,并且每页最多打印 54 行,如何实现呢? 3.1.2 解决方法 基本思路如下:首 ...

随机推荐

  1. Mac环境下Myeclispe2015工具的安装与破解

    链接地址:http://www.07net01.com/2015/08/919753.html 07net01.com 发布于 2015-08-30 22:19:37 分类:IT技术 阅读(306) ...

  2. Android应用开发提高篇(6)-----FaceDetector(人脸检测)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/10/2388776.html 一.概述 初次看到FaceDetector这个类时,心里想:And ...

  3. Problem C: Andy's First Dictionary

    Problem C: Andy’s First DictionaryTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 18 Solved: 5[Submit] ...

  4. Mysql的四种分区

    mysql一共有四大分区分别为hash range list key 四个分区. 分区的字段需要时主键才可以成功 . 第一种 hash分区 第二张list分区 第三种 key分区 第四种 range分 ...

  5. 关于CDH5.2+ 添加hive自定义UDAF函数的方法

  6. 怎么理解angularjs中的服务?

    AngularJS中的服务其实就是提供一种方式抽取共用类库 比如说一些工具类方法,我们传统的做法就是自己写个 utility 类,把相关的工具方法填充到utility里面去,最后把utility类放到 ...

  7. ISO/IEC 14443协议浅谈

    一. 非接触IC卡简介 非接触IC卡又称射频卡,是射频识别技术和IC卡技术有机结合的产物.它解决了无源(卡中无电源)和免接触这一难题,具有更加方便.快捷的特点,广泛用于电子支付.通道控制.公交收费.停 ...

  8. 基于Visual C++2013拆解世界五百强面试题--题10-找出N个数种最大的K个数

    有一亿个整数,请找出最大的 1000 个,要求时间越短越好, 空间占用越好越好. 如果不考虑时间效率,很容易想到解决方法,我们只需存储前一千个数, 然后依次读入后面的数和这一千个数组比较,替换其中比较 ...

  9. IOS中的自动布局

    Autolayout是一种“自动布局”技术,专门用来布局UI界面 Autolayout能很轻松地解决屏幕适配问题 Autolayout的两条核心概念:   >1 参照:通过参照其他控件或父控件来 ...

  10. Angular JS 学习笔记(一)

    1. 菜鸟教程:http://www.runoob.com/angularjs/angularjs-tutorial.html 2. Angular JS中文网:http://www.apjs.net ...