写万年历大致可以分为以下几个步骤:

1.根据用户输入的年份判断该年是否是闰年。

2.根据用户输入的月份计算该月的天数。

3.计算输入的年份之前的总天数。

4.计算输入的月份之前的天数。

5.计算该月的第一天是星期几,然后输出日历。

将这个大工程分为这几步就简单多了,可以很好的学习循环语句哦。

 public class Test4 {

     /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("------万年历------");
System.out.print("请输入要查询的年份:");
Scanner input=new Scanner(System.in);
int year=input.nextInt();
boolean runNian;
int totalDays=0;
int days=0; //判断改年为闰年还是平年
if((year%4==0&&year%100!=0)||year%400==0){
runNian=true;
}else{
runNian=false;
}
if(runNian){
System.out.println(year+"年是闰年");
}else{
System.out.println(year+"年是平年");
}
//计算该年之前一共的天数(从公元1年开始到输入年份前一年)
for(int i=1;i<year;i++){
if((i%4==0&&i%100!=0)||i%400==0){
totalDays+=366;
}else{
totalDays+=365;
}
}
System.out.println(year+"年之前一共有"+totalDays+"天");
//判断输入的月份有多少天,并且计算该月之前一共的天数
System.out.print("请输入要查询的月份:");
int month=input.nextInt();
int beforeDays=0;
int i=1;
do{
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days=31;break;
case 2:
if(runNian){
days=29;
}else{
days=28;
}
break;
default:
days=30;
break;
}
if(i<month){
beforeDays=beforeDays+days;
}
i++; }while(i<=month);
totalDays+=beforeDays;
System.out.println(year+"年"+month+"月之前一共有"+beforeDays+"天");
System.out.println("该月有"+days+"天");
//输出日历,0代表星期日,1~6分别代表星期一到星期六(重点,以后注意看,这段是我写时卡克的地方)
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
int s=(totalDays+1)%7;
//输出空格
for(int nulNum=0;nulNum<s;nulNum++){
System.out.print("\t");
}
//在输完空格的位置上输出本月的日历
for(int j=1;j<=days;j++){
//该月第一天之前要输出的空格数,如果是星期五,前面输出5个空格
System.out.print(j+"\t");
if((totalDays+j)%7==6){
System.out.println();
}
} } }

Java基本语法_循环练习系列(二)——万年历的更多相关文章

  1. Java基本语法_循环练习系列(一)——模拟双色球

    目前正在自学java中,学完循环这一块,简单写几个例子,使之更加熟练掌握循环语句和条件语句. 简述一下要这段代码要完成的任务: /*有33个红色球,16个蓝色球. 在33个里选6个 ,16个里选1个. ...

  2. 小白的java学习之路 “ 循环结构(二)”

    一.for 循环 语法: for(表达式一;表达式二;表达式三){ 循环操作 } 表达式一:参数初始化 表达式二:条件判断 表达式三:更新循环变量 执行流程: 步骤一:执行表达式一.初始化参数 步骤二 ...

  3. Java 程序测试_循环语句中的break和continue

    package test; public class Loop_Statement { public static void main(String [] args) { String[] newba ...

  4. java‘小秘密’系列(二)---Integer

    java'小秘密'系列(二)---Integer 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bug的时候,才能处理更加从容. 目录 java'小秘 ...

  5. java基础解析系列(二)---Integer

    java基础解析系列(二)---Integer 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bug的时候,才能处理更加从容. 目录 java基础解析 ...

  6. 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用

    062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...

  7. 【JAVA编码】 JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换

    http://blog.csdn.net/qinysong/article/details/1179489 这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记 ...

  8. java基础语法(二)--单列模式

    java基础语法(二)--单列模式 /** * 功能:单列模式 * @author Administrator * */ public class SingletonTest { public sta ...

  9. Java问题记录——循环里的二次判断与状态更新

    Java问题记录——循环里的二次判断与状态更新 摘要:本文主要记录了在循环操作时可能出现的问题. 问题重现 在使用循环结构时,如果使用了定时任务,或者代码会多次调用循环结构,可能会导致有些对象会被循环 ...

随机推荐

  1. [转]VisualSVN错误 Cannot query proxy blanket解决办法

    最近重新做了一下系统,在安装和使用svn过程中遇到了一些问题,记下备忘. 第一次安装好系统之后,安装VisualSVN遇到报错: Custom action InstallWMISchemaExcut ...

  2. sql语句增加字段 索引

    alter table order_info add area varchar(50) create index group_compar on ry_order (group_compar);   ...

  3. spark(2.2) - spark-shell RDD编程

    [基本操作] 1* 从文件系统中加载数据创建RDD -> 本地文件系统 ->HDFS 2* 转换操作 [ 会创建新的RDD ,没有真正计算 ] >> filter() > ...

  4. 【转】php通过curl跨域向asp.net服务器上传文件及参数

    转:http://blog.sina.com.cn/s/blog_13331dce50102vq32.html 这是一个由php通过调用asp.net接口向asp.net服务器post上传文件及参数并 ...

  5. (原创)Codeforces Round #550 (Div. 3) D. Equalize Them All

    D. Equalize Them All time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  6. ASP.NET-GridView分页排序显示

    前期我们分别介绍了gridview怎么进行固定表多行数据显示,以及怎么设计花样表头.下面我们介绍怎么利用gridview进行分页显示的同时还可以进行排序显示. 显示效果 前端DEMO <span ...

  7. Chrome 67 以后版本无法离线安装crx插件

    原文链接:https://blog.csdn.net/wanwuguicang/article/details/80716178 升级了Chrome后无法离线安装扩展 如图: 谷歌自Chrome 67 ...

  8. P2617 Dynamic Rankings 动态主席树

    \(\color{#0066ff}{ 题目描述 }\) 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i ...

  9. BZOJ 3028: 食物

    \(\color{#0066ff}{ 题目描述 }\) 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮 ...

  10. P1114 “非常男女”计划

    题意:给你一个01串,求满足0和1总数相等的最大字串   $n\ \le\ 10^5$ 1.$O(n^3)$枚举起点终点,统计判断是否成立 2.$O(n^2)$先$O(n)$时间计算01个数的前缀和, ...