java计算天干地支 十二生肖

本文介绍了一个使用Java编写的程序,该程序能够计算指定年份的天干地支及对应的十二生肖。通过简单的数学运算,程序可以输出从1804年至2050年间任一年份的天干地支组合及其生肖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java计算天干地支 十二生肖

 

/**

 *@author:518ad-ccn

 *date:Dec 16, 2011

 *describe:计算天干地支,12生肖

 *计算规则相对简单,详细计算规则请参照百度百科http://baike.baidu.com/view/13672.htm

 */

public class TianGanDizhiShengXiao{

 private final static String[][] tgdz = new String[][]{

 {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"}//10天干

 ,{"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"}};//12地支

 //12生肖,(注:12生肖对应12地支,即子鼠,丑牛,寅虎依此类推)

 private final static String[] animalYear = 

 new String[]{"鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"};

 private final static int startYear = 1804;//定义起始年,1804年为甲子年属鼠

 /**获取当前年份与起始年之间的差值**/

 public static int subtractYear(int year){

 int jiaziYear = startYear;

 if(year<jiaziYear){//如果年份小于起始的甲子年(startYear = 1804),则起始甲子年往前偏移

 jiaziYear = jiaziYear-(60+60*((jiaziYear-year)/60));//60年一个周期

 }

 return year-jiaziYear;

 }

 /**获取该年的天干名称**/

 public static String getTianGanName(int year){

 String name = tgdz[0][subtractYear(year)%10];

 return name;

 }

 /**获取该年的地支名称**/

 public static String getDiZhiName(int year){

 String name = tgdz[1][subtractYear(year)%12];

 return name;

 }

 /**

 * 获取该年的天干、地支名称

 * @param year 年份

 * @return

 */

 public static String getTGDZName(int year){

 String name = getTianGanName(year)+ getDiZhiName(year);

 return name;

 }

 /**

 * 获取该年的生肖名称

 * @param year 年份

 * @return

 */

 public static String getAnimalYearName(int year){

 String name = animalYear[subtractYear(year)%12];

 return name;

 }

 /**

 * @param args

 */

 public static void main(String[] args) {

 int i = 0;

 for(int k = startYear;k<2050;k++){

 System.out.print(k+":"+getTGDZName(k)+ "年属"+getAnimalYearName(k));

 if(++i%tgdz[0].length == 0){

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

 }

 }

 //System.out.print(getTGDZName(2011));

 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值