流程大概是 1.提示输入年号 2.获得输入的值赋给y 3.提示输入月份 4.获得输入的值赋给m 5.调用zdts()方法,并将y和m的值传递到这个方法进行运算 6.获得zdts()方法的返回值,赋给max 7.显示max的值
import java.util.Scanner;
/**
* Created by DELL on 2017/6/19.
*/
public class DaysCuculator {
public static void main(String[] args){
System.out.println("请输入年份:");
Scanner yearScanner = new Scanner(System.in);
int y = yearScanner.nextInt();
System.out.println("请输入月份:");
Scanner monthScanner = new Scanner(System.in);
int m = monthScanner.nextInt();
int max = zdts(y,m);
System.out.println(max);
}
private static int zdts(int year,int month){
//判断是否是二月
if(month==2){
//是二月,判断平年与闰年
if(year%100==0 && year%400==0||year%100!=0&&year%4==0){
return 29;//是闰年,二月29天
}else{
return 28;//不是闰年,二月28天
}}else{
return 30;//不是二月返回30
}
}
}
这个代码没有考虑农历的大月与小月
public class 万年历 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个年份:");
int year = input.nextInt();
System.out.println("请输入一个月份:");
int month = input.nextInt();
int day = 0;
for (int i = 1900; i < year; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
day = day + 366;
} else {
day = day + 365;
}
}
for (int i = 1; i < month; i++) {
if (i == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
day = day + 29;
} else {
day = day + 28;
}
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
day = day + 30;
} else {
day = day + 31;
}
}
System.out.println("日\t一\t二\t三\t四\t五\t六");
int kg = (day + 1) % 7;
for (int i = 1; i <= kg; i++) {
System.out.print("\t");
}
int t = 0;
if (month == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
t = 29;
} else {
t = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
t = 30;
} else {
t = 31;
}
for (int i = 1; i <= t; i++) {
System.out.print(i + "\t");
if ((day + i) % 7 == 6) {
System.out.println();
}
}
}
}
之前学习的时候写过一个万年历的例子,希望对你有所帮助~