个人主页-爱因斯晨
文章专栏-赛博算命
最近学习人工智能时遇到一个好用的网站分享给大家:
人工智能学习文末有投票,评论区有红包哦!

前言
在前段时间更新了赛博算命系列,出乎我的意料反响很好。也受到广大网友的赞赏,今天将继续更新赛博算命系列------使用八字来算事业运。我在前几篇文章中更新过关于八字排盘的,其实内容很片面只是算了四柱。在博大精深的算命文化中,这不够严谨。分析一个事情要全方位考虑,也就比较复杂。比如算事业运,可以根据八字也可以根据六爻。根据八字但不能只根据八字,要算四柱,五行,十神,流年和格局。总的来说是很复杂很麻烦,写这篇博客也花了会很大的心力。由衷感叹古人的智慧博大精深!
一、四柱
1.1 初识
四柱由 "年柱、月柱、日柱、时柱" 组成,每组干支分别对应出生的时间维度,各有其象征意义:
- 年柱 (出生年份的干支)
- 代表祖上、家庭根基、早年运势(1-16 岁)。
- 年干:象征祖父、外部环境的初始影响;
- 年支:象征祖母、家庭整体氛围。
- 例:1990 年为庚午年,年柱即为 "庚午"(庚为阳金,午为阳火)。
- 月柱 (出生月份的干支)
- 代表父母、兄弟姐妹、青年运势(17-32 岁),是四柱中最重要的一柱(称为 "提纲")。
- 月干:象征父亲、事业初期的助力;
- 月支(月令):决定八字的 "格局",是五行力量的主要来源,影响整体命局的平衡。
- 例:农历五月为午月,若 1990 年五月的月干为壬午,则月柱为 "壬午"。
- 日柱 (出生日期的干支)
- 代表自身(日主)、配偶、中年运势(33-48 岁),是四柱的核心。
- 日干(日主):自身的象征,是分析十神、五行强弱的基准;
- 日支:象征配偶、婚姻关系、内心状态。
- 例:农历五月初五为甲申日,日柱即为 "甲申"(甲为阳木,代表日主自身;申为阳金,代表配偶宫)。
- 时柱 (出生时辰的干支)
- 代表子女、晚年运势(49 岁以后)、最终成就。
- 时干:象征儿子、事业的延续性;
- 时支:象征女儿、晚年生活状态。
- 例:午时出生,若时干为庚,则时柱为 "庚午"。
1.2 原理
- 年柱:以农历新年为分界(而非公历 1 月 1 日),如 2024 年农历正月初一后为甲辰年,之前为癸卯年。
- 月柱:以节气为分界(如立春后为寅月,惊蛰后为卯月),而非农历月份数字,需用 "五虎遁" 口诀推算月干。
- 日柱:需根据万年历查询,或通过复杂的天文历法公式计算(因农历大小月、闰月等因素影响)。
- 时柱:以 2 小时为一个时辰(如 23:00-1:00 为子时),需用 "五鼠遁" 口诀根据日干推算时干。
1.3 代码实现
java
package sizhu;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class sizhu {
// 天干数组
private static final String[] TIANGAN = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
// 地支数组
private static final String[] DIZHI = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
// 月份地支数组,正月为寅,依次类推
private static final String[] MONTH_DIZHI = {"寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子", "丑"};
// 五虎遁年起月诀映射,用于根据年干确定月干
private static final Map<Character, Integer> YEAR_MAP = new HashMap<>();
// 五鼠遁日起时诀映射,用于根据日干确定时干
private static final Map<Character, Integer> DAY_MAP = new HashMap<>();
static {
// 初始化五虎遁年起月诀映射
YEAR_MAP.put('甲', 2);
YEAR_MAP.put('乙', 4);
YEAR_MAP.put('丙', 6);
YEAR_MAP.put('丁', 8);
YEAR_MAP.put('戊', 10);
YEAR_MAP.put('己', 2);
YEAR_MAP.put('庚', 4);
YEAR_MAP.put('辛', 6);
YEAR_MAP.put('壬', 8);
YEAR_MAP.put('癸', 10);
// 初始化五鼠遁日起时诀映射
DAY_MAP.put('甲', 0);
DAY_MAP.put('乙', 2);
DAY_MAP.put('丙', 4);
DAY_MAP.put('丁', 6);
DAY_MAP.put('戊', 8);
DAY_MAP.put('己', 0);
DAY_MAP.put('庚', 2);
DAY_MAP.put('辛', 4);
DAY_MAP.put('壬', 6);
DAY_MAP.put('癸', 8);
}
/**
* 根据年份获取年柱
* @param year 年份
* @return 年柱,如 "甲辰"
*/
public static String getYearColumn(int year) {
int tgIndex = (year - 3) % 10;
int dzIndex = (year - 3) % 12;
return TIANGAN[tgIndex] + DIZHI[dzIndex];
}
/**
* 根据年柱和月份获取月柱
* @param yearColumn 年柱
* @param month 月份
* @return 月柱,如 "丁卯"
*/
public static String getMonthColumn(String yearColumn, int month) {
int tgIndex = YEAR_MAP.get(yearColumn.charAt(0)) + month - 1;
tgIndex = tgIndex % 10;
int dzIndex = month - 1;
return TIANGAN[tgIndex] + MONTH_DIZHI[dzIndex];
}
/**
* 根据蔡勒公式计算日柱,此处简化处理
* 实际应用中需要完整实现蔡勒公式并进行精确计算
* @param year 年份
* @param month 月份
* @param day 日期
* @return 日柱,如 "丙午"
*/
public static String getDayColumn(int year, int month, int day) {
// 蔡勒公式核心逻辑省略,这里简单假设一个固定结果
int tgIndex = 0;
int dzIndex = 0;
return TIANGAN[tgIndex] + DIZHI[dzIndex];
}
/**
* 根据日柱和时辰获取时柱
* @param dayColumn 日柱
* @param hour 时辰
* @return 时柱,如 "戊子"
*/
public static String getHourColumn(String dayColumn, int hour) {
int tgIndex = DAY_MAP.get(dayColumn.charAt(0)) + hour / 2;
tgIndex = tgIndex % 10;
int dzIndex = hour / 2;
return TIANGAN[tgIndex] + DIZHI[dzIndex];
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入出生年份:");
int year = scanner.nextInt();
System.out.print("请输入出生月份:");
int month = scanner.nextInt();
System.out.print("请输入出生日期:");
int day = scanner.nextInt();
System.out.print("请输入出生时辰(0 - 23):");
int hour = scanner.nextInt();
// 计算年柱
String yearColumn = getYearColumn(year);
// 计算月柱
String monthColumn = getMonthColumn(yearColumn, month);
// 计算日柱
String dayColumn = getDayColumn(year, month, day);
// 计算时柱
String hourColumn = getHourColumn(dayColumn, hour);
System.out.println("八字为:" + yearColumn + " " + monthColumn + " " + dayColumn + " " + hourColumn);
scanner.close();
}
}
java
请输入出生年份:2006
请输入出生月份:2
请输入出生日期:15
请输入出生时辰(0 - 23):20
八字为:丁亥 癸卯 甲子 甲戌
1.4 代码分析
- 核心数据定义
- 定义了天干数组
TIANGAN
(甲到癸共 10 个) - 定义了地支数组
DIZHI
(子到亥共 12 个) - 定义了月份对应的地支数组
MONTH_DIZHI
(正月为寅,符合传统命理规则) - 定义了两个映射表用于计算月干和时干:
YEAR_MAP
:五虎遁年起月诀的映射关系DAY_MAP
:五鼠遁日起时诀的映射关系
- 定义了天干数组
- 静态初始化块
- 初始化了
YEAR_MAP
和DAY_MAP
的具体映射值,这些值是根据传统命理中的 "五虎遁" 和 "五鼠遁" 规则设定的
- 初始化了
- 核心方法
getYearColumn(int year)
:根据年份计算年柱getMonthColumn(String yearColumn, int month)
:根据年柱和月份计算月柱getDayColumn(int year, int month, int day)
:计算日柱(简化实现)getHourColumn(String dayColumn, int hour)
:根据日柱和时辰计算时柱
- 主方法
- 接收用户输入的出生年月日时
- 依次计算四柱并输出结果
二、五行
2.1 初识
- 木旺:主创造力、行动力,适合文化、教育、林业、设计等需 "生长""拓展" 的领域。
- 火旺:主热情、表现力,适合能源、餐饮、演艺、公关等需 "展示""沟通" 的领域。
- 土旺:主稳重、包容,适合建筑、农业、管理、行政等需 "踏实""统筹" 的领域。
- 金旺:主果断、精准,适合金融、机械、法律、医疗等需 "严谨""决断" 的领域。
- 水旺:主智慧、灵活,适合物流、旅游、科技、贸易等需 "流动""应变" 的领域。
判断要点:若命局中某五行过旺,需通过事业 "疏导"(如木旺用火泄秀,从事火属性行业);若某五行过弱,需补其力量(如金弱,可从事金属性行业增强事业根基)。
2.2 原理
干支与五行的对应规则(核心依据)
每个天干、地支都有固定的五行属性,这是五行计算的基础:
- 天干五行 :
甲、乙 → 木(甲为阳木,乙为阴木)
丙、丁 → 火(丙为阳火,丁为阴火)
戊、己 → 土(戊为阳土,己为阴土)
庚、辛 → 金(庚为阳金,辛为阴金)
壬、癸 → 水(壬为阳水,癸为阴水) - 地支五行 :
寅、卯 → 木(寅为阳木,卯为阴木)
巳、午 → 火(巳为阴火,午为阳火)
辰、未、戌、丑 → 土(辰、戌为阳土;未、丑为阴土)
申、酉 → 金(申为阳金,酉为阴金)
亥、子 → 水(亥为阴水,子为阳水)
例:八字 "庚午、壬午、甲申、庚午" 中,天干 "庚、壬、甲" 分别对应金、水、木;地支 "午、午、申、午" 分别对应火、火、金、火。
2.3 代码实现
Java
package wuxing;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class wuxing {
// 天干与五行的对应关系 - 修复变量名
private static final Map<Character, String> TIAN_GAN_WU_XING = new HashMap<>();
// 地支与五行的对应关系 - 修复变量名
private static final Map<Character, String> DI_ZHI_WU_XING = new HashMap<>();
static {
// 初始化天干五行 - 这里的引用已经正确
TIAN_GAN_WU_XING.put('甲', "木");
TIAN_GAN_WU_XING.put('乙', "木");
TIAN_GAN_WU_XING.put('丙', "火");
TIAN_GAN_WU_XING.put('丁', "火");
TIAN_GAN_WU_XING.put('戊', "土");
TIAN_GAN_WU_XING.put('己', "土");
TIAN_GAN_WU_XING.put('庚', "金");
TIAN_GAN_WU_XING.put('辛', "金");
TIAN_GAN_WU_XING.put('壬', "水");
TIAN_GAN_WU_XING.put('癸', "水");
// 初始化地支五行 - 这里的引用已经正确
DI_ZHI_WU_XING.put('子', "水");
DI_ZHI_WU_XING.put('丑', "土");
DI_ZHI_WU_XING.put('寅', "木");
DI_ZHI_WU_XING.put('卯', "木");
DI_ZHI_WU_XING.put('辰', "土");
DI_ZHI_WU_XING.put('巳', "火");
DI_ZHI_WU_XING.put('午', "火");
DI_ZHI_WU_XING.put('未', "土");
DI_ZHI_WU_XING.put('申', "金");
DI_ZHI_WU_XING.put('酉', "金");
DI_ZHI_WU_XING.put('戌', "土");
DI_ZHI_WU_XING.put('亥', "水");
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入四柱(年柱、月柱、日柱、时柱,用空格分隔,例如:丁亥 壬寅 甲子 丙寅):");
String input = scanner.nextLine();
// 修复:使用 \\s+ 正则表达式处理任意数量的空白字符分隔,并先trim去除首尾空格
String[] pillars = input.trim().split("\\s+");
// 验证输入是否正确 - 后续验证逻辑不变
if (pillars.length != 4) {
System.out.println("输入格式错误,请输入四个柱,用空格分隔");
return;
}
for (String pillar : pillars) {
if (pillar.length() != 2) {
System.out.println("输入格式错误,每个柱应该由两个字组成:" + pillar);
return;
}
}
// 计算五行分布
Map<String, Integer> fiveElements = calculateFiveElements(pillars);
// 输出结果
System.out.println("\n五行分布统计:");
System.out.println("木:" + fiveElements.get("木"));
System.out.println("火:" + fiveElements.get("火"));
System.out.println("土:" + fiveElements.get("土"));
System.out.println("金:" + fiveElements.get("金"));
System.out.println("水:" + fiveElements.get("水"));
scanner.close();
}
/**
* 根据四柱计算五行分布
*/
private static Map<String, Integer> calculateFiveElements(String[] pillars) {
Map<String, Integer> result = new HashMap<>();
// 初始化五行计数
result.put("木", 0);
result.put("火", 0);
result.put("土", 0);
result.put("金", 0);
result.put("水", 0);
for (String pillar : pillars) {
// 每个柱由一个天干和一个地支组成
char tianGan = pillar.charAt(0); // 天干
char diZhi = pillar.charAt(1); // 地支
// 计算天干对应的五行并计数 - 已修复变量名引用
String tgWx = TIAN_GAN_WU_XING.get(tianGan);
if (tgWx != null) {
result.put(tgWx, result.get(tgWx) + 1);
} else {
System.out.println("未知的天干:" + tianGan);
}
// 计算地支对应的五行并计数 - 已修复变量名引用
String dzWx = DI_ZHI_WU_XING.get(diZhi);
if (dzWx != null) {
result.put(dzWx, result.get(dzWx) + 1);
} else {
System.out.println("未知的地支:" + diZhi);
}
}
return result;
}
}
java
请输入四柱(年柱、月柱、日柱、时柱,用空格分隔,例如:丁亥 壬寅 甲子 丙寅):
丁亥 癸卯 甲子 甲戌
五行分布统计:
木:3
火:1
土:1
金:0
水:3
2.4 代码分析
1. main
方法(程序入口)
作为程序的控制中心,负责以下流程:
- 输入处理 :通过
Scanner
接收用户输入的四柱信息(如 "丁亥 壬寅 甲子 丙寅")。 - 输入校验:
- 检查输入的四柱数量是否为 4 个;
- 检查每个柱的长度是否为 2(确保 "天干 + 地支" 的格式);
若不符合格式,直接提示错误并终止程序,避免无效数据进入计算环节。
- 调用核心计算 :将校验后的四柱数组传入
calculateFiveElements
方法,获取五行分布结果。 - 输出结果:打印五行(木、火、土、金、水)的数量统计。
- 资源释放 :关闭
Scanner
,避免资源泄露。
2. calculateFiveElements
方法(核心计算)
作为工具方法,封装了五行分布的计算逻辑,具体职责:
- 初始化计数容器 :创建
Map<String, Integer>
用于存储五行的数量,初始值均为 0。 - 遍历四柱:循环处理每个柱的天干和地支:
- 提取天干(每柱第 1 个字符)和地支(每柱第 2 个字符);
- 通过
TIAN_GAN_WU_XING
和DI_ZHI_WU_XING
映射表获取对应的五行; - 对获取到的五行进行计数(值 + 1)。
- 异常处理:若遇到未定义的天干 / 地支,打印提示信息(如 "未知的天干:X"),避免程序崩溃。
- 返回结果 :将统计好的五行数量
Map
返回给主方法。
三、十神
3.1 初识
- 官杀(正官、七杀)
- 正官:代表正式职业、稳定事业、职场地位,主 "按部就班的成就",如体制内工作、管理层职位,象征通过努力获得的认可。
- 七杀:代表挑战性事业、竞争环境、权力与风险,主 "突破性成就",如创业、高压行业(金融、销售)、需要对抗竞争的领域。
- 判断要点:官杀需有力量(得月令、得生扶)但不过旺,且需 "制化得当"(如用印星化官杀为权,用食伤制七杀为功),否则易成压力或挫折。
- 印星(正印、偏印)
- 正印:代表学历、贵人扶持、稳定资源,主 "通过知识或长辈 / 平台获得事业基础",适合教育、科研、文职等需专业积累的领域。
- 偏印:代表特殊技能、创意灵感、非传统路径,主 "通过独特能力或冷门领域突破",适合设计、策划、自由职业等。
- 判断要点:印星为用(生扶日主且为喜用)时,易得贵人相助;若印星过旺压制食伤,则可能缺乏行动力,事业易停滞。
- 食伤(食神、伤官)
- 食神:代表才华、执行力、稳健输出,主 "通过技能稳步拓展事业",适合技术岗、手工艺、管理等需耐心的领域。
- 伤官:代表创新、野心、突破规则,主 "通过创意或变革获得机会",适合创业、艺术、新媒体等需灵活应变的领域。
- 判断要点:食伤是 "生财的源头",需有力量流通(食伤生财),否则才华难以转化为事业成果;若食伤被官杀压制,则创意易受限制。
- 财星(正财、偏财)
- 正财:代表稳定收入、主业收益,主 "通过踏实工作积累财富",事业倾向于保守、持续的领域。
- 偏财:代表意外机遇、副业收益,主 "通过资源整合或风险投资获得突破",适合多元化经营、合作项目。
- 判断要点:财星需有源头(食伤生财),且不被劫财争夺,否则事业易因财务纠纷受阻;财星为用者,对事业的驱动力更强。
- 比肩、劫财
- 代表同辈、同事、竞争关系:比肩为喜用时,易得同辈相助,适合团队合作;劫财为忌时,易遇同行争夺资源,需防范合作风险。
3.2 原理
十神是根据日主(日干)与其他干支的五行生克关系 ,结合阴阳属性推导而出的十种符号,代表不同的人际关系和事物属性。
-
核心基准:以日主为中心
十神的计算均以日柱的天干(日主)为 "我",其他干支(包括年干、月干、时干、年支、月支、日支、时支)与 "我" 的关系,构成十神。
-
生克关系与十神的对应(核心规则)
以 "我"(日主)为基准,根据 "生我、我生、克我、我克、同我" 五种关系,结合阴阳属性(阳与阳、阴与阴为同性,阳与阴、阴与阳为异性),衍生出十神:
关系类型 同性(阳对阳 / 阴对阴) 异性(阳对阴 / 阴对阳) 同我(五行相同) 比肩 劫财 我生(我五行生彼) 食神 伤官 生我(彼五行生我) 偏印(枭神) 正印 我克(我五行克彼) 偏财 正财 克我(彼五行克我) 七杀(偏官) 正官 例:若日主为 "甲木"(阳木):
- 遇到 "甲木"(同我 + 同性)→ 比肩;遇到 "乙木"(同我 + 异性)→ 劫财。
- 遇到 "丙火"(我生 + 同性,甲木生丙火)→ 食神;遇到 "丁火"(我生 + 异性)→ 伤官。
- 遇到 "壬水"(生我 + 同性,壬水生甲木)→ 偏印;遇到 "癸水"(生我 + 异性)→ 正印。
- 遇到 "戊土"(我克 + 同性,甲木克戊土)→ 偏财;遇到 "己土"(我克 + 异性)→ 正财。
- 遇到 "庚金"(克我 + 同性,庚金克甲木)→ 七杀;遇到 "辛金"(克我 + 异性)→ 正官。
-
地支十神的计算
地支本身不直接对应十神,需通过以下两种方式推导:
- 根据地支的五行属性,直接与日主对比(如日支为午火,日主为甲木,则午火为甲木的食神)。
- 根据地支藏干(如寅藏甲、丙、戊),以藏干的天干属性与日主对比,藏干的十神即代表地支的潜在十神属性。
3.3 代码实现
java
package shishen;
import java.util.*;
public class shishen {
// 天干的阴阳属性: 阳为true,阴为false
private static final Map<Character, Boolean> tianGanYinYang = new HashMap<>();
// 天干的五行属性
private static final Map<Character, String> tianGanWuXing = new HashMap<>();
// 地支的五行属性
private static final Map<Character, String> diZhiWuXing = new HashMap<>();
// 地支的阴阳属性
private static final Map<Character, Boolean> diZhiYinYang = new HashMap<>();
static {
// 初始化天干阴阳属性
tianGanYinYang.put('甲', true); // 阳
tianGanYinYang.put('乙', false); // 阴
tianGanYinYang.put('丙', true); // 阳
tianGanYinYang.put('丁', false); // 阴
tianGanYinYang.put('戊', true); // 阳
tianGanYinYang.put('己', false); // 阴
tianGanYinYang.put('庚', true); // 阳
tianGanYinYang.put('辛', false); // 阴
tianGanYinYang.put('壬', true); // 阳
tianGanYinYang.put('癸', false); // 阴
// 初始化天干五行
tianGanWuXing.put('甲', "木");
tianGanWuXing.put('乙', "木");
tianGanWuXing.put('丙', "火");
tianGanWuXing.put('丁', "火");
tianGanWuXing.put('戊', "土");
tianGanWuXing.put('己', "土");
tianGanWuXing.put('庚', "金");
tianGanWuXing.put('辛', "金");
tianGanWuXing.put('壬', "水");
tianGanWuXing.put('癸', "水");
// 初始化地支五行
diZhiWuXing.put('子', "水");
diZhiWuXing.put('丑', "土");
diZhiWuXing.put('寅', "木");
diZhiWuXing.put('卯', "木");
diZhiWuXing.put('辰', "土");
diZhiWuXing.put('巳', "火");
diZhiWuXing.put('午', "火");
diZhiWuXing.put('未', "土");
diZhiWuXing.put('申', "金");
diZhiWuXing.put('酉', "金");
diZhiWuXing.put('戌', "土");
diZhiWuXing.put('亥', "水");
// 初始化地支阴阳属性
diZhiYinYang.put('子', true); // 阳
diZhiYinYang.put('丑', false); // 阴
diZhiYinYang.put('寅', true); // 阳
diZhiYinYang.put('卯', false); // 阴
diZhiYinYang.put('辰', true); // 阳
diZhiYinYang.put('巳', false); // 阴
diZhiYinYang.put('午', true); // 阳
diZhiYinYang.put('未', false); // 阴
diZhiYinYang.put('申', true); // 阳
diZhiYinYang.put('酉', false); // 阴
diZhiYinYang.put('戌', true); // 阳
diZhiYinYang.put('亥', false); // 阴
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入四柱(年柱、月柱、日柱、时柱,用空格分隔,例如:丁亥 壬寅 甲子 丙寅):");
String input = scanner.nextLine();
String[] pillars = input.split(" ");
// 验证输入是否正确
if (pillars.length != 4) {
System.out.println("输入格式错误,请输入四个柱,用空格分隔");
return;
}
for (String pillar : pillars) {
if (pillar.length() != 2) {
System.out.println("输入格式错误,每个柱应该由两个字组成:" + pillar);
return;
}
}
// 获取日干(日柱的天干),作为参照点
char riGan = pillars[2].charAt(0);
System.out.println("\n日干(日主)为:" + riGan);
System.out.println("日干五行:" + tianGanWuXing.get(riGan));
System.out.println("日干阴阳:" + (tianGanYinYang.get(riGan) ? "阳" : "阴"));
// 计算并输出十神及其五行
System.out.println("\n十神分布及五行:");
calculateAndPrintTenGods(pillars, riGan);
scanner.close();
}
/**
* 计算并打印十神及其五行
*/
private static void calculateAndPrintTenGods(String[] pillars, char riGan) {
String riGanWuXing = tianGanWuXing.get(riGan);
boolean riGanYang = tianGanYinYang.get(riGan);
// 遍历四柱中的每个干支
String[] positions = {"年干", "年支", "月干", "月支", "日干", "日支", "时干", "时支"};
int index = 0;
for (String pillar : pillars) {
// 处理天干
char tianGan = pillar.charAt(0);
String wuXing = tianGanWuXing.get(tianGan);
String tenGod = getTenGod(tianGan, true, riGanWuXing, riGanYang);
System.out.println(positions[index++] + "(" + tianGan + "):" + tenGod + ",五行:" + wuXing);
// 处理地支
char diZhi = pillar.charAt(1);
wuXing = diZhiWuXing.get(diZhi);
tenGod = getTenGod(diZhi, false, riGanWuXing, riGanYang);
System.out.println(positions[index++] + "(" + diZhi + "):" + tenGod + ",五行:" + wuXing);
}
}
/**
* 根据干支与日干的关系确定十神
* @param ganZhi 干支字符
* @param isTianGan 是否为天干
* @param riGanWuXing 日干五行
* @param riGanYang 日干是否为阳
* @return 十神名称
*/
private static String getTenGod(char ganZhi, boolean isTianGan, String riGanWuXing, boolean riGanYang) {
// 获取当前干支的五行和阴阳
String wuXing = isTianGan ? tianGanWuXing.get(ganZhi) : diZhiWuXing.get(ganZhi);
boolean yang = isTianGan ? tianGanYinYang.get(ganZhi) : diZhiYinYang.get(ganZhi);
// 日干与当前干支为同一五行
if (wuXing.equals(riGanWuXing)) {
return yang == riGanYang ? "比肩" : "劫财";
}
// 判断五行生克关系
if (isGenerating(wuXing, riGanWuXing)) {
// 生我者为印星
return yang == riGanYang ? "偏印" : "正印";
} else if (isGenerating(riGanWuXing, wuXing)) {
// 我生者为食伤
return yang == riGanYang ? "食神" : "伤官";
} else if (isRestraining(wuXing, riGanWuXing)) {
// 克我者为官杀
return yang == riGanYang ? "七杀" : "正官";
} else if (isRestraining(riGanWuXing, wuXing)) {
// 我克者为财星
return yang == riGanYang ? "偏财" : "正财";
}
return "未知";
}
/**
* 判断五行a是否生五行b (a生b)
*/
private static boolean isGenerating(String a, String b) {
// 相生关系:木生火,火生土,土生金,金生水,水生木
return (a.equals("木") && b.equals("火")) ||
(a.equals("火") && b.equals("土")) ||
(a.equals("土") && b.equals("金")) ||
(a.equals("金") && b.equals("水")) ||
(a.equals("水") && b.equals("木"));
}
/**
* 判断五行a是否克五行b (a克b)
*/
private static boolean isRestraining(String a, String b) {
// 相克关系:木克土,土克水,水克火,火克金,金克木
return (a.equals("木") && b.equals("土")) ||
(a.equals("土") && b.equals("水")) ||
(a.equals("水") && b.equals("火")) ||
(a.equals("火") && b.equals("金")) ||
(a.equals("金") && b.equals("木"));
}
}
java
请输入四柱(年柱、月柱、日柱、时柱,用空格分隔,例如:丁亥 壬寅 甲子 丙寅):
丁亥 癸卯 甲子 甲戌
日干(日主)为:甲
日干五行:木
日干阴阳:阳
十神分布及五行:
年干(丁):伤官,五行:火
年支(亥):正印,五行:水
月干(癸):正印,五行:水
月支(卯):劫财,五行:木
日干(甲):比肩,五行:木
日支(子):偏印,五行:水
时干(甲):比肩,五行:木
时支(戌):偏财,五行:土
3.4 代码分析
1. main
方法(流程控制中心)
- 输入处理:接收用户输入的四柱信息(如 "丁亥 壬寅 甲子 丙寅"),并进行格式校验(必须为 4 个柱,每柱 2 字),避免无效输入导致计算错误。
- 核心参数提取 :从日柱中提取日干(
riGan
)------ 十神计算的基准点("日主"),并打印日干的五行和阴阳属性,为后续分析提供参照。 - 调用工具方法 :通过
calculateAndPrintTenGods
方法启动十神计算,并将结果输出到控制台。 - 资源释放 :关闭
Scanner
,避免资源泄露。
2. calculateAndPrintTenGods
方法(十神计算与输出)
作为连接主方法与底层计算的 "桥梁",负责:
- 参数准备 :获取日干的五行(
riGanWuXing
)和阴阳(riGanYang
),作为十神判断的基准。 - 遍历四柱:按 "年→月→日→时" 的顺序,拆解每个柱的天干和地支,依次处理 8 个位置(年干、年支、月干、月支、日干、日支、时干、时支)。
- 位置标记 :通过
positions
数组定义每个干支的位置名称(如 "年干""月支"),使输出结果更易理解。 - 调用底层计算 :对每个天干 / 地支,调用
getTenGod
方法计算对应的十神,并关联其五行属性,最终打印完整信息(如 "年干 (丁):正财,五行:火")。
3. getTenGod
方法(十神判定核心逻辑)
十神计算的 "引擎",基于以下规则推导十神名称:
-
获取当前干支的属性 :根据是否为天干(
isTianGan
),从对应的Map
中提取五行(wuXing
)和阴阳(yang
)。 -
判断与日干的关系:
- 若与日干同五行(如日干为甲木,当前干支为乙木):根据阴阳是否相同,判定为 "比肩"(同性)或 "劫财"(异性)。
- 若为 "生我" 关系(如木生火,火为木所生):根据阴阳是否相同,判定为 "偏印"(同性)或 "正印"(异性)。
- 若为 "我生" 关系(如火生土,土为火所生):根据阴阳是否相同,判定为 "食神"(同性)或 "伤官"(异性)。
- 若为 "克我" 关系(如金克木,金克木):根据阴阳是否相同,判定为 "七杀"(同性)或 "正官"(异性)。
- 若为 "我克" 关系(如木克土,土为木所克):根据阴阳是否相同,判定为 "偏财"(同性)或 "正财"(异性)。
(注:生克关系的具体逻辑由辅助方法
isGenerating
和isRestraining
实现。)
四、流年
4.1 初识
一、流年干支的基础属性
- 流年天干 :代表当年的 "显性事件"(如公开的机会、外部压力、人际关系变动),直接与原命局的天干发生作用(生、克、合等)。
- 例:若原命局日干为甲木(阳木),流年天干为庚金(阳金),则庚金是甲木的 "七杀",可能当年会遇到竞争、挑战或突发任务。
- 流年地支 :代表当年的 "隐性环境"(如内部资源变化、潜在机遇、基础运势),与原命局的地支发生刑、冲、合、害等关系,影响更深远。
- 例:流年地支为午火,原命局有子水,则 "子午相冲",主当年易有变动(如搬家、换工作、情绪波动)。
二、流年与原命局的核心作用关系
- 五行生克 :
- 流年五行生扶原命局的 "喜用神":当年运势顺遂,如喜火者遇丙午年(火旺),事业、财运易有突破。
- 流年五行克制原命局的 "喜用神" 或生扶 "忌神":当年多波折,如忌金者遇辛酉年(金旺),易遇压力或损失。
- 十神触发 :
- 流年出现 "官杀":可能涉及工作变动、职位调整、法律事务(正官主正规事务,七杀主突发挑战)。
- 流年出现 "财星":与收入、投资、资源相关,为喜用则财运佳,为忌则易破财。
- 流年出现 "食伤":主才华发挥、创意涌现,适合开拓新领域或开展副业。
- 流年出现 "印星":易得贵人相助、学业 / 证书有进展,或生活环境更稳定。
- 流年出现 "比劫":主同辈互动增多,可能有合作机会,也可能因竞争引发纠纷。
- 地支刑冲合害 :
- 冲:主 "动"(变动、冲突),如寅申冲可能涉及出行、工作地点变化;子午冲可能影响情绪或健康。
- 合:主 "合"(合作、融合),如子丑合可能有合作机会或人际关系缓和;卯戌合可能有项目落地。
- 刑:主 "刑伤"(矛盾、损耗),如辰午酉亥自刑,易因自身失误引发问题;寅巳申三刑,需防人际关系冲突。
- 害:主 "暗害"(隐性麻烦),如子未害可能因小事引发纠纷,需防背后是非。
4.2 原理
流年指一个人出生后每一年的干支(如 2024 年甲辰、2025 年乙巳),其计算核心是以干支历法为基础,分析当年干支与原命局(四柱)的互动关系,从而推断该年的运势变化。
1. 流年干支的确定原理
- 干支循环规律:天干(甲、乙、丙... 癸)10 个,地支(子、丑、寅... 亥)12 个,二者组合形成 60 个 "干支组合"(60 年一循环),称为 "六十甲子"。
- 计算方法 :以农历新年为分界(而非公历 1 月 1 日),根据具体年份对照 "六十甲子表" 确定流年干支。
例:2023 年农历新年后为 "癸卯年",2024 年为 "甲辰年",依此类推(可通过公式计算:流年干支 = (年份 - 3)÷ 60 的余数对应六十甲子)。
2. 流年与原命局的作用原理
流年的核心作用是 "动态触发" 原命局的潜在信息,具体通过以下关系实现:
- 五行生克:流年干支的五行(如甲辰年,甲属木、辰属土)与原命局五行发生生扶(如木生火)或克泄(如土克水)。
- 若流年五行生扶原命局的 "喜用神"(对命局有利的五行),则当年运势顺遂;
- 若生扶 "忌神"(对命局不利的五行),则当年多波折。
- 十神对应:流年干支以日主(日干)为基准,对应十神(如甲木日主遇庚金流年,庚金为七杀),直接关联该年的人事特征(如七杀代表竞争、变动)。
- 刑冲合害:流年地支与原命局地支发生特定关系(如子鼠年遇午马年为 "子午相冲"),引发不同的事件倾向:
- 冲:主变动、冲突(如工作调动、人际关系矛盾);
- 合:主合作、融合(如项目达成、人际关系缓和);
- 刑:主损耗、纠纷(如健康问题、合同纠纷);
- 害:主隐性麻烦(如背后是非、细节失误)。
4.3 代码实现
java
import java.util.*;
// 修改类名,符合Java命名规范(首字母大写)
public class liunian {
// 天干地支基础数据
private static final String[] TIANGAN = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
private static final String[] DIZHI = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
// 天干五行映射
private static final Map<Character, String> TIAN_GAN_WU_XING = new HashMap<>();
// 地支五行映射
private static final Map<Character, String> DI_ZHI_WU_XING = new HashMap<>();
// 天干阴阳(阳为true,阴为false)
private static final Map<Character, Boolean> TIAN_GAN_YINYANG = new HashMap<>();
// 地支阴阳
private static final Map<Character, Boolean> DI_ZHI_YINYANG = new HashMap<>();
static {
// 初始化天干数据
TIAN_GAN_WU_XING.put('甲', "木");
TIAN_GAN_WU_XING.put('乙', "木");
TIAN_GAN_WU_XING.put('丙', "火");
TIAN_GAN_WU_XING.put('丁', "火");
TIAN_GAN_WU_XING.put('戊', "土");
TIAN_GAN_WU_XING.put('己', "土");
TIAN_GAN_WU_XING.put('庚', "金");
TIAN_GAN_WU_XING.put('辛', "金");
TIAN_GAN_WU_XING.put('壬', "水");
TIAN_GAN_WU_XING.put('癸', "水");
TIAN_GAN_YINYANG.put('甲', true);
TIAN_GAN_YINYANG.put('乙', false);
TIAN_GAN_YINYANG.put('丙', true);
TIAN_GAN_YINYANG.put('丁', false);
TIAN_GAN_YINYANG.put('戊', true);
TIAN_GAN_YINYANG.put('己', false);
TIAN_GAN_YINYANG.put('庚', true);
TIAN_GAN_YINYANG.put('辛', false);
TIAN_GAN_YINYANG.put('壬', true);
TIAN_GAN_YINYANG.put('癸', false);
// 初始化地支数据
DI_ZHI_WU_XING.put('子', "水");
DI_ZHI_WU_XING.put('丑', "土");
DI_ZHI_WU_XING.put('寅', "木");
DI_ZHI_WU_XING.put('卯', "木");
DI_ZHI_WU_XING.put('辰', "土");
DI_ZHI_WU_XING.put('巳', "火");
DI_ZHI_WU_XING.put('午', "火");
DI_ZHI_WU_XING.put('未', "土");
DI_ZHI_WU_XING.put('申', "金");
DI_ZHI_WU_XING.put('酉', "金");
DI_ZHI_WU_XING.put('戌', "土");
DI_ZHI_WU_XING.put('亥', "水");
DI_ZHI_YINYANG.put('子', true);
DI_ZHI_YINYANG.put('丑', false);
DI_ZHI_YINYANG.put('寅', true);
DI_ZHI_YINYANG.put('卯', false);
DI_ZHI_YINYANG.put('辰', true);
DI_ZHI_YINYANG.put('巳', false);
DI_ZHI_YINYANG.put('午', true);
DI_ZHI_YINYANG.put('未', false);
DI_ZHI_YINYANG.put('申', true);
DI_ZHI_YINYANG.put('酉', false);
DI_ZHI_YINYANG.put('戌', true);
DI_ZHI_YINYANG.put('亥', false);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入四柱
System.out.println("请输入四柱(年柱、月柱、日柱、时柱,空格分隔,如:丁亥 壬寅 甲子 丙寅):");
String input = scanner.nextLine();
// 修复:使用trim()和\\s+处理任意空格分隔
String[] pillars = input.trim().split("\\s+");
if (pillars.length != 4) {
System.out.println("四柱输入错误!");
return;
}
// 输入各干支的十神
Map<String, String> shiShenMap = new HashMap<>();
String[] positions = {"年干", "年支", "月干", "月支", "日干", "日支", "时干", "时支"};
System.out.println("\n请依次输入以下位置的十神(直接输入十神名称):");
for (String pos : positions) {
System.out.print(pos + "(" + getGanZhiByPosition(pillars, pos) + "):");
shiShenMap.put(pos, scanner.nextLine().trim());
}
// 添加:输入各干支的五行属性
Map<String, String> wuXingInputMap = new HashMap<>();
System.out.println("\n请依次输入以下位置的五行(木、火、土、金、水):");
for (String pos : positions) {
System.out.print(pos + "(" + getGanZhiByPosition(pillars, pos) + "):");
wuXingInputMap.put(pos, scanner.nextLine().trim());
}
// 获取日主(日干)信息
char riGan = pillars[2].charAt(0);
String riZhuWuXing = TIAN_GAN_WU_XING.get(riGan);
boolean riZhuYang = TIAN_GAN_YINYANG.get(riGan);
System.out.println("\n日主(日干):" + riGan +
",五行:" + riZhuWuXing +
",阴阳:" + (riZhuYang ? "阳" : "阴"));
// 输入目标年份
System.out.println("\n请输入要查询的流年年份(如:2024):");
int year = scanner.nextInt();
scanner.nextLine(); // 消费换行符
// 1. 计算流年干支
String liuNianGanZhi = getLiuNianGanZhi(year);
System.out.println("\n" + year + "年流年干支:" + liuNianGanZhi);
char lnTianGan = liuNianGanZhi.charAt(0);
char lnDiZhi = liuNianGanZhi.charAt(1);
// 2. 自动计算流年干支的十神和五行
String lnTgWuXing = TIAN_GAN_WU_XING.get(lnTianGan);
String lnTgShiShen = getShiShen(lnTianGan, true, riGan);
String lnDzWuXing = DI_ZHI_WU_XING.get(lnDiZhi);
String lnDzShiShen = getShiShen(lnDiZhi, false, riGan);
System.out.println("流年天干" + lnTianGan + ":十神=" + lnTgShiShen + ",五行=" + lnTgWuXing);
System.out.println("流年地支" + lnDiZhi + ":十神=" + lnDzShiShen + ",五行=" + lnDzWuXing);
// 3. 使用用户输入的五行属性(替换原自动计算五行的代码)
Map<String, String> wuXingMap = wuXingInputMap;
// 4. 显示原命局信息
System.out.println("\n===== 原命局信息 =====");
for (String pos : positions) {
System.out.println(pos + ":" + getGanZhiByPosition(pillars, pos) +
",十神:" + shiShenMap.get(pos) +
",五行:" + wuXingMap.get(pos));
}
// 5. 显示流年信息
System.out.println("\n===== " + year + "年流年信息 =====");
System.out.println("流年干支:" + liuNianGanZhi);
System.out.println("流年天干:" + lnTianGan + ",十神:" + lnTgShiShen + ",五行:" + lnTgWuXing);
System.out.println("流年地支:" + lnDiZhi + ",十神:" + lnDzShiShen + ",五行:" + lnDzWuXing);
// 6. 分析五行生克影响
analyzeWuXingImpact(lnTgWuXing, lnDzWuXing, wuXingMap);
// 7. 分析十神影响
analyzeShiShenImpact(lnTgShiShen, lnDzShiShen, shiShenMap);
// 8. 分析地支刑冲合害
analyzeXingChong(lnDiZhi, pillars);
scanner.close();
}
// 根据位置获取对应的干支
private static String getGanZhiByPosition(String[] pillars, String position) {
switch (position) {
case "年干": return String.valueOf(pillars[0].charAt(0));
case "年支": return String.valueOf(pillars[0].charAt(1));
case "月干": return String.valueOf(pillars[1].charAt(0));
case "月支": return String.valueOf(pillars[1].charAt(1));
case "日干": return String.valueOf(pillars[2].charAt(0));
case "日支": return String.valueOf(pillars[2].charAt(1));
case "时干": return String.valueOf(pillars[3].charAt(0));
case "时支": return String.valueOf(pillars[3].charAt(1));
default: return "";
}
}
// 计算流年干支
private static String getLiuNianGanZhi(int year) {
int offset = (year - 3) % 60;
if (offset < 0) offset += 60;
int tgIndex = offset % 10;
int dzIndex = offset % 12;
return TIANGAN[tgIndex] + DIZHI[dzIndex];
}
// 计算十神
private static String getShiShen(char ganZhi, boolean isTianGan, char riGan) {
String riGanWx = TIAN_GAN_WU_XING.get(riGan);
boolean riGanYang = TIAN_GAN_YINYANG.get(riGan);
String wx = isTianGan ? TIAN_GAN_WU_XING.get(ganZhi) : DI_ZHI_WU_XING.get(ganZhi);
boolean yang = isTianGan ? TIAN_GAN_YINYANG.get(ganZhi) : DI_ZHI_YINYANG.get(ganZhi);
if (wx.equals(riGanWx)) {
return yang == riGanYang ? "比肩" : "劫财";
} else if (isSheng(wx, riGanWx)) {
return yang == riGanYang ? "偏印" : "正印";
} else if (isSheng(riGanWx, wx)) {
return yang == riGanYang ? "食神" : "伤官";
} else if (isKe(wx, riGanWx)) {
return yang == riGanYang ? "七杀" : "正官";
} else if (isKe(riGanWx, wx)) {
return yang == riGanYang ? "偏财" : "正财";
}
return "未知";
}
// 五行相生:a生b
private static boolean isSheng(String a, String b) {
return (a.equals("木") && b.equals("火")) ||
(a.equals("火") && b.equals("土")) ||
(a.equals("土") && b.equals("金")) ||
(a.equals("金") && b.equals("水")) ||
(a.equals("水") && b.equals("木"));
}
// 五行相克:a克b
private static boolean isKe(String a, String b) {
return (a.equals("木") && b.equals("土")) ||
(a.equals("土") && b.equals("水")) ||
(a.equals("水") && b.equals("火")) ||
(a.equals("火") && b.equals("金")) ||
(a.equals("金") && b.equals("木"));
}
// 分析五行生克影响
private static void analyzeWuXingImpact(String lnTgWx, String lnDzWx, Map<String, String> yuanMingWuXing) {
System.out.println("\n===== 五行生克影响分析 =====");
// 五行相生关系
Map<String, String> sheng = new HashMap<>();
sheng.put("木", "火");
sheng.put("火", "土");
sheng.put("土", "金");
sheng.put("金", "水");
sheng.put("水", "木");
// 五行相克关系
Map<String, String> ke = new HashMap<>();
ke.put("木", "土");
ke.put("土", "水");
ke.put("水", "火");
ke.put("火", "金");
ke.put("金", "木");
// 分析流年天干对原命局的影响
for (Map.Entry<String, String> entry : yuanMingWuXing.entrySet()) {
String pos = entry.getKey();
String wx = entry.getValue();
if (sheng.getOrDefault(lnTgWx, "").equals(wx)) {
System.out.println("流年天干五行" + lnTgWx + "生" + pos + "五行" + wx + ",增强其力量");
} else if (ke.getOrDefault(lnTgWx, "").equals(wx)) {
System.out.println("流年天干五行" + lnTgWx + "克" + pos + "五行" + wx + ",削弱其力量");
}
if (sheng.getOrDefault(lnDzWx, "").equals(wx)) {
System.out.println("流年地支五行" + lnDzWx + "生" + pos + "五行" + wx + ",增强其力量");
} else if (ke.getOrDefault(lnDzWx, "").equals(wx)) {
System.out.println("流年地支五行" + lnDzWx + "克" + pos + "五行" + wx + ",削弱其力量");
}
}
}
// 分析十神影响
private static void analyzeShiShenImpact(String lnTgShiShen, String lnDzShiShen, Map<String, String> yuanMingShiShen) {
System.out.println("\n===== 十神影响分析 =====");
// 十神关系简要说明
Map<String, String> shiShenEffect = new HashMap<>();
shiShenEffect.put("比肩", "代表同辈、朋友,可能有合作或竞争");
shiShenEffect.put("劫财", "代表同辈、竞争者,可能有财物损耗");
shiShenEffect.put("食神", "代表才华、福气,利于发挥能力");
shiShenEffect.put("伤官", "代表创新、变动,可能有突破或是非");
shiShenEffect.put("正财", "代表正财、稳定收入,利于财运");
shiShenEffect.put("偏财", "代表偏财、意外之财,可能有额外收入");
shiShenEffect.put("正官", "代表事业、压力,利于职位提升");
shiShenEffect.put("七杀", "代表挑战、机遇,可能有重大变动");
shiShenEffect.put("正印", "代表贵人、庇护,利于学习、获得支持");
shiShenEffect.put("偏印", "代表灵感、研究,利于思考、特殊机遇");
// 流年十神本身的影响
System.out.println("流年天干十神" + lnTgShiShen + ":" + shiShenEffect.getOrDefault(lnTgShiShen, "未知影响"));
System.out.println("流年地支十神" + lnDzShiShen + ":" + shiShenEffect.getOrDefault(lnDzShiShen, "未知影响"));
// 流年十神与原命局十神的互动
for (Map.Entry<String, String> entry : yuanMingShiShen.entrySet()) {
String pos = entry.getKey();
String ss = entry.getValue();
if (lnTgShiShen.equals(ss)) {
System.out.println("流年天干十神与" + pos + "十神相同(" + ss + "),该十神力量增强");
}
if (lnDzShiShen.equals(ss)) {
System.out.println("流年地支十神与" + pos + "十神相同(" + ss + "),该十神力量增强");
}
}
}
// 分析地支刑冲合害
private static void analyzeXingChong(char lnDz, String[] pillars) {
System.out.println("\n===== 地支刑冲合害分析 =====");
// 原命局地支
List<Character> yuanMingDiZhi = new ArrayList<>();
yuanMingDiZhi.add(pillars[0].charAt(1)); // 年支
yuanMingDiZhi.add(pillars[1].charAt(1)); // 月支
yuanMingDiZhi.add(pillars[2].charAt(1)); // 日支
yuanMingDiZhi.add(pillars[3].charAt(1)); // 时支
// 冲的关系
Map<Character, Character> chong = new HashMap<>();
chong.put('子', '午');
chong.put('午', '子');
chong.put('卯', '酉');
chong.put('酉', '卯');
chong.put('寅', '申');
chong.put('申', '寅');
chong.put('巳', '亥');
chong.put('亥', '巳');
chong.put('辰', '戌');
chong.put('戌', '辰');
chong.put('丑', '未');
chong.put('未', '丑');
// 合的关系
Map<Character, Character> he = new HashMap<>();
he.put('子', '丑');
he.put('丑', '子');
he.put('寅', '亥');
he.put('亥', '寅');
he.put('卯', '戌');
he.put('戌', '卯');
he.put('辰', '酉');
he.put('酉', '辰');
he.put('巳', '申');
he.put('申', '巳');
he.put('午', '未');
he.put('未', '午');
for (char dz : yuanMingDiZhi) {
if (chong.containsKey(lnDz) && chong.get(lnDz) == dz) {
System.out.println("流年地支" + lnDz + "与原命局地支" + dz + "相冲,可能有变动、冲突");
}
if (he.containsKey(lnDz) && he.get(lnDz) == dz) {
System.out.println("流年地支" + lnDz + "与原命局地支" + dz + "相合,可能有合作、融合");
}
}
}
}
java
请输入四柱(年柱、月柱、日柱、时柱,空格分隔,如:丁亥 壬寅 甲子 丙寅):
丁亥 癸卯 甲子 甲戌
请依次输入以下位置的十神(直接输入十神名称):
年干(丁):伤官
年支(亥):正印
月干(癸):正印
月支(卯):劫财
日干(甲):比肩
日支(子):偏印
时干(甲):比肩
时支(戌):偏财
请依次输入以下位置的五行(木、火、土、金、水):
年干(丁):火
年支(亥):水
月干(癸):水
月支(卯):木
日干(甲):木
日支(子):水
时干(甲):木
时支(戌):土
日主(日干):甲,五行:木,阴阳:阳
请输入要查询的流年年份(如:2024):
2025
2025年流年干支:丙午
流年天干丙:十神=食神,五行=火
流年地支午:十神=食神,五行=火
===== 原命局信息 =====
年干:丁,十神:伤官,五行:火
年支:亥,十神:正印,五行:水
月干:癸,十神:正印,五行:水
月支:卯,十神:劫财,五行:木
日干:甲,十神:比肩,五行:木
日支:子,十神:偏印,五行:水
时干:甲,十神:比肩,五行:木
时支:戌,十神:偏财,五行:土
===== 2025年流年信息 =====
流年干支:丙午
流年天干:丙,十神:食神,五行:火
流年地支:午,十神:食神,五行:火
===== 五行生克影响分析 =====
流年天干五行火生时支五行土,增强其力量
流年地支五行火生时支五行土,增强其力量
===== 十神影响分析 =====
流年天干十神食神:代表才华、福气,利于发挥能力
流年地支十神食神:代表才华、福气,利于发挥能力
===== 地支刑冲合害分析 =====
流年地支午与原命局地支子相冲,可能有变动、冲突
4.4 代码分析
1. main
方法(总流程控制中心)
作为程序入口,负责统筹所有流程,核心职责包括:
- 输入处理:接收用户输入的四柱信息(年柱、月柱、日柱、时柱)、8 个位置(年干、年支等)的十神和五行属性,以及目标查询年份,同时进行基础格式校验(如四柱数量是否为 4)。
- 核心参数提取:从日柱中提取日干(日主),作为十神计算的基准,并展示日主的五行和阴阳属性。
- 流年干支计算 :调用
getLiuNianGanZhi
方法计算目标年份的流年干支(如 2024 年甲辰),并拆解为流年天干和地支。 - 多维度分析触发 :依次调用
getShiShen
(计算流年十神)、analyzeWuXingImpact
(五行生克分析)、analyzeShiShenImpact
(十神影响分析)、analyzeXingChong
(地支刑冲合害分析),串联各分析模块。 - 结果输出:分模块打印原命局信息、流年信息及各类分析结果,确保输出清晰有条理。
2. 基础工具方法(数据解析与计算)
getGanZhiByPosition
:根据位置(如 "年干""月支")从四柱中提取对应的干支字符(如年柱 "丁亥" 的年干为 "丁",年支为 "亥"),为输入十神和五行时的位置提示提供支持。getLiuNianGanZhi
:根据目标年份计算流年干支,采用 "(年份 - 3) 取模 60" 的规则(与传统干支纪年法一致),返回如 "甲辰""丙午" 等结果。getShiShen
:计算流年天干 / 地支相对于日主的十神,基于五行生克(如 "生我为印""我克为财")和阴阳属性(同性为偏、异性为正)推导,核心逻辑与十神计算的传统规则一致。
3. 分析类方法(多维度运势解读)
analyzeWuXingImpact
:分析流年五行与原命局五行的生克关系。通过预设 "五行相生"(木生火、火生土等)和 "五行相克"(木克土、土克水等)规则,判断流年天干 / 地支五行对原命局各位置五行的 "增强"(生)或 "削弱"(克)作用。analyzeShiShenImpact
:解读流年十神的含义及与原命局十神的互动。预设十神基础含义(如正财主稳定收入、七杀主挑战),并分析流年十神与原命局十神的 "同神增强" 效应(如流年正官与月干正官相同,则正官力量增强)。analyzeXingChong
:分析流年地支与原命局地支的刑冲合害关系。重点处理 "冲"(如子午冲、寅申冲)和 "合"(如子丑合、寅亥合)两种关系,分别对应 "变动冲突" 和 "合作融合" 的解读,符合传统命理中地支互动的核心规则。
五、格局
5.1 初识
八字格局是根据月令藏干透出的十神所确立的核心框架,直接影响事业的高低层次:
- 正官格、七杀格:若格局清纯(无刑冲克破),主事业有贵气,易在体制内或大型企业获得地位。
- 食神生财格、伤官生财格:主靠才华变现,适合自主创业或专业技术领域,事业成就与个人能力直接挂钩。
- 财生官杀格:主通过资源积累推动事业升级,适合商业经营或管理岗,易因财富提升社会地位。
- 印绶格:主靠知识或贵人扶持立足,适合学术、教育或背靠大平台的事业,稳定性强但突破较慢。
判断要点:格局成者(喜用有力、忌神受制),事业层次较高,易有大成就;格局败者(喜用被克、忌神无制),事业多波折,需通过后天努力弥补。
5.2 原理
格局是原命局(四柱)的核心框架,其计算以月令(月支)为 "提纲",通过分析月令藏干的透出情况与十神配置,确定命局的核心势能与成败标准。
1. 格局的核心基准:月令提纲
- 月令(月支)是四柱中力量最强的地支,被称为 "提纲",因其直接决定了命局中五行的旺衰(如寅卯月木旺、巳午月火旺),是格局的 "源头"。
- 格局必须围绕月令展开:月令藏干中力量最强的天干(本气)或透出到天干的藏干,是格局的核心十神。
2. 月令藏干的分析规则
地支(尤其是月令)通常藏有 1-3 个天干(称为 "藏干"),按力量强弱分为 "本气"(力量最强)、"中气"(次强)、"余气"(最弱),例如:
- 寅月(月支为寅)藏干为甲(本气,木)、丙(中气,火)、戊(余气,土);
- 丑月(月支为丑)藏干为己(本气,土)、辛(中气,金)、癸(余气,水)。
3. 格局的确立步骤
- 第一步:找月令藏干透出者
若月令藏干中的某一天干透出到年干、月干、时干(称为 "透出"),则以该透出的天干所对应的十神立格。
例:寅月(藏甲、丙、戊),若月干为丙火(透出),且日主为甲木(丙火是甲木的 "食神"),则立 "食神格"。 - 第二步:若藏干未透出,以月令本气立格
若月令藏干均未透出,则以月令本气对应的十神立格。
例:寅月(本气为甲木),若甲木未透出,日主为乙木(甲木与乙木同属木,为 "比肩"),则立 "比肩格"。 - 第三步:判断格局成败
格局的核心是 "用神得力、忌神受制":- 用神:格局中需要扶持的十神(如官杀格需用印星化官杀,避免官杀克身);
- 忌神:破坏格局的十神(如正官格遇七杀混杂,七杀为忌)。
例:"食神生财格" 成格的条件是:食神有力(能生财)、财星有根(能承载食神之力)、无枭神(印星)夺食(避免食神被克),否则格局破败。
5.3 代码实现
java
import java.util.*;
public class geju {
// 天干地支基础数据
private static final String[] TIANGAN = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
private static final String[] DIZHI = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
// 地支藏干映射 (本气, 中气, 余气)
private static final Map<Character, List<Character>> DIZHI_CANGGAN = new HashMap<>();
// 天干五行映射
private static final Map<Character, String> TIAN_GAN_WU_XING = new HashMap<>();
// 地支五行映射
private static final Map<Character, String> DI_ZHI_WU_XING = new HashMap<>();
// 天干阴阳 (阳为true,阴为false)
private static final Map<Character, Boolean> TIAN_GAN_YINYANG = new HashMap<>();
static {
// 初始化地支藏干
DIZHI_CANGGAN.put('子', Arrays.asList('癸'));
DIZHI_CANGGAN.put('丑', Arrays.asList('己', '辛', '癸'));
DIZHI_CANGGAN.put('寅', Arrays.asList('甲', '丙', '戊'));
DIZHI_CANGGAN.put('卯', Arrays.asList('乙'));
DIZHI_CANGGAN.put('辰', Arrays.asList('戊', '乙', '癸'));
DIZHI_CANGGAN.put('巳', Arrays.asList('丙', '庚', '戊'));
DIZHI_CANGGAN.put('午', Arrays.asList('丁', '己'));
DIZHI_CANGGAN.put('未', Arrays.asList('己', '丁', '乙'));
DIZHI_CANGGAN.put('申', Arrays.asList('庚', '壬', '戊'));
DIZHI_CANGGAN.put('酉', Arrays.asList('辛'));
DIZHI_CANGGAN.put('戌', Arrays.asList('戊', '丁', '辛'));
DIZHI_CANGGAN.put('亥', Arrays.asList('壬', '甲'));
// 初始化天干五行
TIAN_GAN_WU_XING.put('甲', "木");
TIAN_GAN_WU_XING.put('乙', "木");
TIAN_GAN_WU_XING.put('丙', "火");
TIAN_GAN_WU_XING.put('丁', "火");
TIAN_GAN_WU_XING.put('戊', "土");
TIAN_GAN_WU_XING.put('己', "土");
TIAN_GAN_WU_XING.put('庚', "金");
TIAN_GAN_WU_XING.put('辛', "金");
TIAN_GAN_WU_XING.put('壬', "水");
TIAN_GAN_WU_XING.put('癸', "水");
// 初始化地支五行
DI_ZHI_WU_XING.put('子', "水");
DI_ZHI_WU_XING.put('丑', "土");
DI_ZHI_WU_XING.put('寅', "木");
DI_ZHI_WU_XING.put('卯', "木");
DI_ZHI_WU_XING.put('辰', "土");
DI_ZHI_WU_XING.put('巳', "火");
DI_ZHI_WU_XING.put('午', "火");
DI_ZHI_WU_XING.put('未', "土");
DI_ZHI_WU_XING.put('申', "金");
DI_ZHI_WU_XING.put('酉', "金");
DI_ZHI_WU_XING.put('戌', "土");
DI_ZHI_WU_XING.put('亥', "水");
// 初始化天干阴阳
TIAN_GAN_YINYANG.put('甲', true);
TIAN_GAN_YINYANG.put('乙', false);
TIAN_GAN_YINYANG.put('丙', true);
TIAN_GAN_YINYANG.put('丁', false);
TIAN_GAN_YINYANG.put('戊', true);
TIAN_GAN_YINYANG.put('己', false);
TIAN_GAN_YINYANG.put('庚', true);
TIAN_GAN_YINYANG.put('辛', false);
TIAN_GAN_YINYANG.put('壬', true);
TIAN_GAN_YINYANG.put('癸', false);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入八字四柱(年柱、月柱、日柱、时柱,空格分隔,如:甲午 丙寅 辛丑 壬辰):");
String input = scanner.nextLine().trim();
String[] pillars = input.split("\\s+");
if (pillars.length != 4) {
System.out.println("输入错误,请输入四个柱!");
return;
}
// 验证输入格式
for (int i = 0; i < pillars.length; i++) {
if (pillars[i].length() != 2) {
System.out.println("第" + (i+1) + "柱格式错误,应为两个字符!");
return;
}
}
// 提取各柱信息
char[] yearGan = {pillars[0].charAt(0)};
char[] yearZhi = {pillars[0].charAt(1)};
char[] monthGan = {pillars[1].charAt(0)};
char[] monthZhi = {pillars[1].charAt(1)};
char[] dayGan = {pillars[2].charAt(0)};
char[] dayZhi = {pillars[2].charAt(1)};
char[] hourGan = {pillars[3].charAt(0)};
char[] hourZhi = {pillars[3].charAt(1)};
// 收集所有天干
Set<Character> allTiangan = new HashSet<>();
allTiangan.add(yearGan[0]);
allTiangan.add(monthGan[0]);
allTiangan.add(dayGan[0]);
allTiangan.add(hourGan[0]);
// 显示基本信息
System.out.println("\n===== 八字基本信息 =====");
System.out.println("年柱:" + pillars[0] + " 月柱:" + pillars[1] + " 日柱:" + pillars[2] + " 时柱:" + pillars[3]);
System.out.println("日主(日干):" + dayGan[0] + ",五行:" + TIAN_GAN_WU_XING.get(dayGan[0]));
// 分析月令藏干
System.out.println("\n===== 月令分析 =====");
char yueLing = monthZhi[0];
System.out.println("月令为:" + yueLing + ",五行:" + DI_ZHI_WU_XING.get(yueLing));
List<Character> cangGan = DIZHI_CANGGAN.get(yueLing);
System.out.println("月令藏干(本气、中气、余气):" + cangGan);
// 查找透出的藏干
List<Character> touChuGan = new ArrayList<>();
for (Character gan : cangGan) {
if (allTiangan.contains(gan)) {
touChuGan.add(gan);
}
}
if (!touChuGan.isEmpty()) {
System.out.println("透出的藏干:" + touChuGan);
} else {
System.out.println("月令藏干均未透出");
}
// 手动输入十神(替换原自动计算逻辑)
Map<Character, String> shiShenMap = new HashMap<>();
System.out.println("\n请依次输入以下天干的十神(直接输入名称,如:比肩、正官):");
// 按年干、月干、日干、时干顺序输入,明确对应关系
String[] positions = {"年干", "月干", "日干", "时干"};
char[] gans = {yearGan[0], monthGan[0], dayGan[0], hourGan[0]};
for (int i = 0; i < positions.length; i++) {
System.out.print(positions[i] + "(" + gans[i] + "):");
shiShenMap.put(gans[i], scanner.nextLine().trim());
}
// 分析格局(使用用户输入的shiShenMap)
String pattern = analyzePattern(dayGan[0], monthZhi[0], cangGan, touChuGan, shiShenMap);
System.out.println("\n===== 格局分析结果 =====");
System.out.println("此八字格局为:" + pattern);
scanner.close();
}
// 分析格局
private static String analyzePattern(char riGan, char yueLing, List<Character> cangGan,
List<Character> touChuGan, Map<Character, String> shiShenMap) {
// 1. 有透出的藏干,以透出的十神立格
if (!touChuGan.isEmpty()) {
// 优先考虑本气透出
Character bengQi = cangGan.get(0);
if (touChuGan.contains(bengQi)) {
String shiShen = shiShenMap.get(bengQi);
return getPatternName(shiShen) + "格(月令本气透出)";
}
// 没有本气透出则考虑中气或余气
for (int i = 1; i < cangGan.size(); i++) {
Character gan = cangGan.get(i);
if (touChuGan.contains(gan)) {
String shiShen = shiShenMap.get(gan);
return getPatternName(shiShen) + "格(月令" + (i == 1 ? "中气" : "余气") + "透出)";
}
}
}
// 2. 藏干未透出,以月令本气立格
Character benQi = cangGan.get(0);
String benQiWuXing = TIAN_GAN_WU_XING.get(benQi);
String riGanWuXing = TIAN_GAN_WU_XING.get(riGan);
boolean riGanYang = TIAN_GAN_YINYANG.get(riGan);
boolean benQiYang = TIAN_GAN_YINYANG.get(benQi);
String shiShen;
if (benQiWuXing.equals(riGanWuXing)) {
shiShen = benQiYang == riGanYang ? "比肩" : "劫财";
} else if (isSheng(benQiWuXing, riGanWuXing)) {
shiShen = benQiYang == riGanYang ? "偏印" : "正印";
} else if (isSheng(riGanWuXing, benQiWuXing)) {
shiShen = benQiYang == riGanYang ? "食神" : "伤官";
} else if (isKe(benQiWuXing, riGanWuXing)) {
shiShen = benQiYang == riGanYang ? "七杀" : "正官";
} else if (isKe(riGanWuXing, benQiWuXing)) {
shiShen = benQiYang == riGanYang ? "偏财" : "正财";
} else {
return "特殊格局(无法直接判定)";
}
return getPatternName(shiShen) + "格(月令本气未透出)";
}
// 获取格局名称
private static String getPatternName(String shiShen) {
switch (shiShen) {
case "正官": return "正官";
case "七杀": return "七杀";
case "正财": return "正财";
case "偏财": return "偏财";
case "正印": return "正印";
case "偏印": return "偏印";
case "食神": return "食神";
case "伤官": return "伤官";
case "比肩": return "比肩";
case "劫财": return "劫财";
default: return "特殊";
}
}
// 五行相生:a生b
private static boolean isSheng(String a, String b) {
return (a.equals("木") && b.equals("火")) ||
(a.equals("火") && b.equals("土")) ||
(a.equals("土") && b.equals("金")) ||
(a.equals("金") && b.equals("水")) ||
(a.equals("水") && b.equals("木"));
}
// 五行相克:a克b
private static boolean isKe(String a, String b) {
return (a.equals("木") && b.equals("土")) ||
(a.equals("土") && b.equals("水")) ||
(a.equals("水") && b.equals("火")) ||
(a.equals("火") && b.equals("金")) ||
(a.equals("金") && b.equals("木"));
}
}
java
请输入八字四柱(年柱、月柱、日柱、时柱,空格分隔,如:甲午 丙寅 辛丑 壬辰):
丁亥 癸卯 甲子 甲戌
===== 八字基本信息 =====
年柱:丁亥 月柱:癸卯 日柱:甲子 时柱:甲戌
日主(日干):甲,五行:木
===== 月令分析 =====
月令为:卯,五行:木
月令藏干(本气、中气、余气):[乙]
月令藏干均未透出
请依次输入以下天干的十神(直接输入名称,如:比肩、正官):
年干(丁):伤官
月干(癸):正印
日干(甲):比肩、
时干(甲):比肩
===== 格局分析结果 =====
此八字格局为:劫财格(月令本气未透出)
进程已结束,退出代码为 0
5.4 代码分析
1. main
方法(流程控制中心)
作为程序入口,负责统筹所有分析步骤,核心职责包括:
- 输入处理与校验:接收用户输入的四柱信息,检查格式合法性(必须为 4 个柱,每柱 2 字),避免无效输入导致的计算错误。
- 基础信息提取:拆解四柱为年、月、日、时的天干和地支,收集所有天干(用于判断藏干是否透出),并提取日主(日干)作为分析基准。
- 基本信息展示:打印八字四柱、日主及五行属性,为后续分析提供直观参考。
- 月令分析:聚焦 "月令"(月支)这一格局核心,展示月令的五行、藏干(本气、中气、余气)及透出情况(藏干是否出现在四柱天干中)。
- 格局推导触发 :调用
analyzePattern
方法,传入月令藏干、透出情况及十神映射,最终打印格局分析结果。
2. 核心工具方法
analyzePattern
(格局推导核心逻辑) :
格局分析的核心方法,遵循 "以月令为提纲" 的传统规则,分两步推导格局:- 若有藏干透出:优先以透出的藏干立格(本气透出优先,其次中气、余气),根据用户输入的十神名称确定格局(如透出藏干为正官则为正官格)。
- 若藏干未透出:以月令本气立格,通过本气与日主的五行生克(如本气生日主为印星)和阴阳关系(如同性为偏印)推导十神,进而确定格局。
getPatternName
(格局名称映射) :
将十神名称转换为对应的格局名称(如 "正官"→"正官格"、"食神"→"食神格"),简化格局结果的输出。isSheng
/isKe
(五行生克判断) :
辅助方法,判断五行间的相生(如木生火)、相克(如木克土)关系,为十神推导提供生克逻辑基础(如 "生我为印""我克为财")。
六、结果解读
根据上述程序,我们可以得到四柱,五行,十神及对应的五行,流年大运,格局月令,我们可以把结果为给DeepSeek即可得出结果的解读:比如:
java
四柱:丁亥 癸卯 甲子 甲戌
五行:
木:3
火:1
土:1
金:0
水:3
十神:
日干(日主)为:甲
日干五行:木
日干阴阳:阳
十神分布及五行:
年干(丁):伤官,五行:火
年支(亥):正印,五行:水
月干(癸):正印,五行:水
月支(卯):劫财,五行:木
日干(甲):比肩,五行:木
日支(子):偏印,五行:水
时干(甲):比肩,五行:木
时支(戌):偏财,五行:土
流年:
===== 2025年流年信息 =====
流年干支:丙午
流年天干:丙,十神:食神,五行:火
流年地支:午,十神:食神,五行:火
===== 五行生克影响分析 =====
流年天干五行火生时支五行土,增强其力量
流年地支五行火生时支五行土,增强其力量
===== 十神影响分析 =====
流年天干十神食神:代表才华、福气,利于发挥能力
流年地支十神食神:代表才华、福气,利于发挥能力
===== 地支刑冲合害分析 =====
流年地支午与原命局地支子相冲,可能有变动、冲突
月令:
月令为:卯,五行:木
月令藏干(本气、中气、余气):[乙]
月令藏干均未透出
格局:
劫财格(月令本气未透出)
提示词:
java
我要根据八字来测算我的事业运,一下是基本信息,请根据这些,给我详细解读:
四柱:丁亥 癸卯 甲子 甲戌
五行:
木:3
火:1
土:1
金:0
水:3
十神:
日干(日主)为:甲
日干五行:木
日干阴阳:阳
十神分布及五行:
年干(丁):伤官,五行:火
年支(亥):正印,五行:水
月干(癸):正印,五行:水
月支(卯):劫财,五行:木
日干(甲):比肩,五行:木
日支(子):偏印,五行:水
时干(甲):比肩,五行:木
时支(戌):偏财,五行:土
流年:
===== 2025年流年信息 =====
流年干支:丙午
流年天干:丙,十神:食神,五行:火
流年地支:午,十神:食神,五行:火
===== 五行生克影响分析 =====
流年天干五行火生时支五行土,增强其力量
流年地支五行火生时支五行土,增强其力量
===== 十神影响分析 =====
流年天干十神食神:代表才华、福气,利于发挥能力
流年地支十神食神:代表才华、福气,利于发挥能力
===== 地支刑冲合害分析 =====
流年地支午与原命局地支子相冲,可能有变动、冲突
月令:
月令为:卯,五行:木
月令藏干(本气、中气、余气):[乙]
月令藏干均未透出
格局:
劫财格(月令本气未透出)
以下是DS的解读:
java
### **命局核心特点**
1. **日主甲木**:
生于卯月(木旺之春),得月令强根,地支亥卯半合木局,时支戌中藏余气根,天干两甲木比肩相助,日主身强无疑。木主仁、进取心强,但过旺需金修剪,命局缺金(无官杀),自我约束力稍弱。
2. **五行流通**:
- **水木成势**:水(印星)生木(比劫),能量集中于木,需火土调和。
- **火土弱而待用**:年干丁火伤官、时支戌土偏财为用神,但丁火被癸水压制,戌土被卯木合克(卯戌合火不化),用神力量不足,需大运流年引动。
3. **十神配置**:
- **印星过旺**(年支亥、月干癸、日支子):主依赖心重,易思虑过多,需伤官(丁火)泄秀展现才华。
- **比劫林立**(月支卯、时干甲):竞争压力大,合作中易有资源争夺。
- **时支偏财(戌)**:为事业关键点,需通过专业技能(火土)获取财富。
---
### **事业方向建议**
- **用神为火土**:火(食伤)代表创意、技能、表达,土(财星)代表实业、资源整合。适合从事技术、教育、文化创意、贸易或需专业门槛的行业(如互联网、设计、咨询)。
- **规避纯木水行业**:如农林、航海等,易加剧五行失衡。
- **合作需谨慎**:比劫多,合伙易生竞争,宜独立负责核心业务。
---
### **2025年(丙午流年)事业分析**
1. **流年双食神(丙午)**:
- 丙火透干,食神泄秀,才华有展现机会,利提案、创作、技术输出。
- 午火生时支戌土(偏财),收入渠道可能拓宽,但需主动争取(火为虚透,需落地为土)。
2. **子午冲(日支逢冲)**:
- 工作环境或岗位易变动(如团队调整、项目转向),可能引发短暂压力,但冲开子水印星束缚,反能突破保守思维。
- 注意情绪管理(子水为印,冲则心绪波动)。
3. **劫财格逢食神**:
- 竞争力转化为优势,可通过独特技能脱颖而出,避免卷入人际纠纷(比劫暗藏竞争)。
---
### **长期发展建议**
- **补足火土能量**:
增强执行力(火)与务实规划(土),避免理想化。可专注技术深耕,或通过自媒体、线上平台(火属性)扩大影响。
- **借流年引动财星**:
2025年把握丙午火势,推动项目落地,偏财戌土被生旺,可尝试副业或投资。
- **39岁后行土运(未申酉戌)**:
中年土金运助财官,事业积累将迎来质变,前期需扎实铺垫。
---
### **总结**
您命局如**强木待雕琢**,需火(才华)引燃、土(平台)扎根。2025年流年如东风助力,宜主动展示能力,接纳变动为机遇。注意平衡竞争关系,聚焦技术或创意变现,中年后财星得地,事业可步步攀升。
七、总结
博主也只是略懂皮毛,不可避免文章中会有错误,也恳请大家的批评指正。另外,事在人为,大家仅供娱乐就好,不可盲目的相信。这个系列博主也更新了很多文章,下一期的选题大家可以私信博主或在评论区打出。感谢大家的支持,等博主的技术再精进一点,争取做出完整的小程序或APP,大家尽情期待!
文献参考:《周易》