大哥要我实现天干地支的组合

本文详细解析了中国传统的天干地支纪年法,介绍了天干地支的构成及其组合规律,展示了每60年一个甲子轮回的循环逻辑,并提供了一段Java代码实现天干地支的配对输出。

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

需求

中国的天干地支记年法中,天干包含十大元素:甲 乙 丙 丁 戊 己 庚 辛 壬 癸

地支包含十二大元素:子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥

假设有天干数组:(1,2,3,4,5,6,7,8,9,10)、地支数组:(1,2,3,4,5,6,7,8,9,10,11,12)

天干地支的数组指针同时向前移动得到(1,1),(2,2)……(10,10)

天干数组的指针移动到末尾元素10会回到第一个元素1,地支数组的指针移动到末尾元素12会回到第一个元素1,

得到(1,11),(2,12),(3,1),(4,2)……
完整可表达为:

(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10)

(1,11),(2,12),(3,1),(4,2),(5,3),(6,4),(7,5),(8,6),(9,7),(10,8)

(1,9),(2,10),(3,11),(4,12),(5,1),(6,2),(7,3),(8,4),(9,5),(10,6),

(1,7),(2,8),(3,9),(4,10),(5,11),(6,12),(7,1),(8,2),(9,3),(10,4),

(1,5),(2,6),(3,7),(4,8),(5,9),(6,10),(7,11),(8,12),(9,1),(10,2),

(1,3),(2,4),(3,5),(4,6),(5,7),(6,8),(7,9),(8,10),(9,11),(10,12)

(1,1),(2,2),(3,3)……
可见循环60次(哈哈,当前代码中不能直接写死了)后,(1,1)会再次重复,即每60算一个甲子轮回

输出结果

(甲子),(乙丑)

(丙寅),(丁卯)

(戊辰),(己巳)

(庚午),(辛未)

(壬申),(癸酉)

(甲戌),(乙亥)

(丙子),(丁丑)

(戊寅),(己卯)

(庚辰),(辛巳)

(壬午),(癸未)

(甲申),(乙酉)

(丙戌),(丁亥)

(戊子),(己丑)

(庚寅),(辛卯)

(壬辰),(癸巳)

(甲午),(乙未)

(丙申),(丁酉)

(戊戌),(己亥)

(庚子),(辛丑)

(壬寅),(癸卯)

(甲辰),(乙巳)

(丙午),(丁未)

(戊申),(己酉)

(庚戌),(辛亥)

(壬子),(癸丑)

(甲寅),(乙卯)

(丙辰),(丁巳)

(戊午),(己未)

(庚申),(辛酉)

(壬戌),(癸亥)

实现

——循环的次数:等于两数组长度的最小公倍数。

public static void main(String[] args) {
		String [] s1={"甲","乙","丙","丁", "戊","己","庚","辛","壬", "癸"};
		String [] s2={"子","丑","寅","卯 ","辰","巳", "午", "未", "申", "酉", "戌", "亥"};
		int m=s1.length;
		int n=s2.length;
		/*
		 * 求最小公倍数:最小公倍数肯定比输入的两个数的最大值还要大,小于两个数的乘积
		 * 1、首先获取输入的两个数中最大的max
		 * 2、通过循环遍历去寻找最小公倍数,当找到后就通过break跳出循环
		 */
		int max = (m > n)? m : n;
		int count;//用于计算最小公倍数
		for(count = max;count <= m * n;count++) {
			if((count % m == 0)&&(count % n == 0)) {
				//System.out.println("最小公倍数为:" + count);
				break;
			}
		}
		for(int i=0;i<count;i++){
			System.out.println("("+s1[i%s1.length]+","+s2[i%s2.length]+")");
		}
	}

写作不易,既然来了,不妨点个关注,点个赞吧!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinJack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值