java年月日选择框for循环_【Java面试题】利用java输入年月,输出相应年月的日历(for循环...

【Java面试题】利用java输入年月,输出相应年月的日历(for循环

【Java面试题】利用java输入年月,输出相应年月的日历(for循环,if语句,switch语句)

[var1]

输入年和月,自动打印对应年月的日历。

[var1]

1970年是Unix系统诞生的时间,所以人们把1970年定为Unix的元年,1970年1月1号是星期四。(这是计算机的一个参考值)

[var1]

首先应该计算出这个月1号是星期几。要想解决1号是星期几,就得先计算出年天数,即截至这一年1月1号的天数。

用for循环,从1970年开始,闰年+366,平年+365;计算出月天数,即截至本月1号的天数。

再用for循环,从1月份开始,算出月天数;再用到闰年判断,再用switch来判断返回月天数。

用年天数加月天数,求得本月1号距离1970年1月1号的总天数。

用总天数来判断本月1号是星期几。

判断本月的总天数(用到switch语句)。

打印输出日历。

package workspace;

import java.util.Scanner;

public class calendar {

public static void main(String[] args) {

/**

* 1.先在页面版上提示输入信息 2.利用for循环判断从1970年到这一年的1月1号的总天数(润平年)。

* 3.再判断这年到该月份1号的天数,涵盖(if)润平年,确定1号星期几 4.确定这个月的天数(switch语句),然后开始打印

*/

// 信息输入

Scanner s = new Scanner(System.in);

try {

System.out.println("请输入年份:");

int year = s.nextInt();

System.out.println("请输入月份:");

int month = s.nextInt();

// 从1970.01.01开始天数累加

int daysum = 0;

for (int i = 1970; i < year; i++) {

if (i % 4 == 0 && i % 100 != 0 || i % 100 == 0 && i % 400 == 0) {

daysum += 366;

} else {

daysum += 365;

}

} // 这年到该月份1号的天数

for (int i = 0; i < month; i++) {// 常识

switch (i) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

daysum += 31;

break;

case 2:

if (year % 4 == 0 && year % 100 != 0 || year % 100 == 0 && year % 400 == 0) {// 判断润平年

daysum += 29;

} else {

daysum += 28;

}

break;

default:

daysum += 30;

break;

}

}

int zhou = 1 + daysum % 7; // 判断该月1号星期几

int max = 0;// 开始这个月的天数

switch (month) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

max += 31;

break;

case 2:

if (year % 4 == 0 && year % 100 != 0 || year % 100 == 0 && year % 400 == 0) {

max += 29;

} else {

max += 28;

}

break;

default:

max += 30;

break;

}

System.out.println("**************" + year + "年 " + month + "月*************");

System.out.println("一\t二\t三\t四\t五\t六\t日");

int day = 1;

for (int i = 0; i < 5; i++) {// 一个月的跨度最多5周

for (int j = 0; j < 7; j++) {// 一周只有7天

if (i == 0 && j < zhou) {// 没有值就空着,往下写

System.out.print("\t");

continue;

}

if (day > max) {// 超过天数就终止

break;

}

System.out.print(day + "\t");

day++;//天数累加,直到月天

}

System.out.println();// 打印完一行后换行

}

} catch (Exception e) {

System.out.println("输入的年份或者月份不符合规范!!!");

}

}

输出样式:

7b89c714d2936e59fb8a2a81c4cf2b5d.png

[var1]

解决问题前一定要先分析问题,把大问题逐步分成小问题,理清逻辑,实现小问题的逻辑,整个问题就已经实现了百分之八十。

不畏难,不强求!

【Java面试题】利用java输入年月,输出相应年月的日历(for循环相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值