import java.util.Scanner;
public class PrintYear {
/**
* 天干字符数组,有着现成的顺序,0-9下标代表甲-癸,使用static修饰是因为静态方法只能引用外部变量
*/
private static String[] tianGan = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛",
"壬", "癸" };
/**
* 地支字符数组,有着现成的顺序,0-11下标代表子-亥
*/
private static String[] dizhi = { "子", "丑", "寅", "卯", "辰", "己", "午", "未",
"申", "酉", "戌", "亥" };
/**
* 据说这是公元后的第一个甲子年
*/
private static int firstJiaZi = 4;
public static void main(String[] args) {
System.out.println("请输入一个年份:");
int year = new Scanner(System.in).nextInt();
// 尽量少使用无意义的数字,给你的变量起个易懂的名字哦
// 可以算任意一年的天干地支,公元前在数字前加-号,例如公元前1年,用-1表示。不过公元前计算是有bug的,留给你思考解决了,哈哈
System.out.println(year < firstJiaZi ? tianGan[tianGan.length
- (firstJiaZi - year) % tianGan.length]
+ dizhi[dizhi.length - (firstJiaZi - year) % dizhi.length]
: tianGan[(year - 4) % tianGan.length]
+ dizhi[(year - firstJiaZi) % dizhi.length]);
}
}
|
|