八字易经算法之用JAVA实现生旺死绝和十神

本文详细介绍了八字易经排盘系统的原理、排盘基础和十神概念,并提供了一个使用Java实现的排盘实例。通过解析八字中的天干、地支以及十神,演示了如何计算大运的生旺死绝和十神。适用于易学爱好者和程序员理解八字易经的基本排盘逻辑。

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

  序:一直上网发现有人出软妹币求八字易经排盘系统方法或者源代码,更有此类软件竟要收费上百元。

  比如:http://bbs.csdn.net/topics/220008904

  我上网查找半天也没有具体八字易经排盘系统原理的文章。

  排盘如同武学中的马步,拳法,是基础中的基础。

  作为易学高手的我(大师♂罗莊)对告诉各位码农如何八字易经排盘系统  负有不可推卸的责任。

  我就细细说怎么排势和十神



请初学者从

八字易经算法之用JAVA实现排大运

开始,前面谈过的基础知识不再叙述。


十天干生旺死绝表
 
天干    长生  沐浴    冠带   临官     帝旺   衰    病    死   墓   绝   胎    养  
 
甲       亥    子       丑    寅       卯    辰    巳    午   未   申   酉    戌  
丙       寅    卯       辰    巳       午    未    申    酉   戌   亥   子    丑  
戊       寅    卯       辰    巳       午    未    申    酉   戌   亥   子    丑  
庚       巳    午       未    申       酉    戌    亥    子   丑   寅   卯    辰  
壬       申    酉       戌    亥       子    丑    寅    卯   辰   巳   午    未  
乙       午    巳       辰    卯       寅    丑    子    亥   戌   酉   申    未  
丁      酉     申       未    午       巳    辰    卯    寅   丑   子   亥    戌  
己      酉     申       未    午       巳    辰    卯    寅   丑   子   亥    戌  
辛      子     亥      戌     酉       申    未    午    巳   辰   卯   寅    丑  
癸      卯     寅      丑     子       亥     戌    酉    申   未   午   巳    辰  


十神概念
 
  天干所标示的六亲及其生克关系, 都以日干为主. 日干与四柱其他天干及地支所藏天干的六亲发生作用, 从而产生生克关系.
 
  天干是阳干见阴干, 阴干见阳干为正, 阳干见阳干, 阴干见阴干为偏. 与日干五行相同者为比肩劫财, 劫财为正, 比肩为偏.对于日干来说,五行同我者为比肩劫财,我生者为伤官食神,我克者为正财偏财,克我者为正官偏官;生我者为正印偏印,比肩 劫财 食神 伤官 偏财 正财 七杀 正官 偏印 正印共十位,因此称为十神。
 
  十神侧重人事分析, 五行侧重个人禀气分量轻重, 两者相辅相成.
 
八字以日干为【我】 如日干为甲  别的干是甲 就称之为比肩 是乙就称之为劫财 是丙就称之为食神 一次类推
     
     
 
  日/干 甲  乙  丙  丁  戊  己  庚  辛  壬  癸   
  甲  比肩 劫财 食神 伤官 偏财 正财 七杀 正官 偏印 正印   
  乙  劫财 比肩 伤官 食神 正财 偏财 正官 七杀 正印 偏印   
  丙  偏印 正印 比肩 劫财 食神 伤官 偏财 正财 七杀 正官   
  丁  正印 偏印 劫财 比肩 伤官 食神 正财 偏财 正官 七杀   
  戊  七杀 正官 偏印 正印 比肩 劫财 食神 伤官 偏财 正财   
  己  正官 七杀 正印 偏印 劫财 比肩 伤官 食神 正财 偏财   
  庚  偏财 正财 七杀 正官 偏印 正印 比肩 劫财 食神 伤官   
  辛  正财 偏财 正官 七杀 正印 偏印 劫财 比肩 伤官 食神   
  壬  食神 伤官 偏财 正财 七杀 正官 偏印 正印 比肩 劫财   
  癸  伤官 食神 正财 偏财 正官 七杀 正印 偏印 劫财 比肩
 
     枭神为偏印

   其实方法很简单:

  用日干分别查找各支位于表的对应值

  就是相当于打擂

  我用上篇文章八字做例子


庚    己    庚    辛
辰    卯    午    巳


日干庚

看到日支午 查表为沐浴

大运上篇文章介绍过为

庚辰   辛巳   壬午   癸未   甲申   乙酉   丙戌   丁亥  

比如

庚辰

庚对庚  查十神表为比肩

庚对辰 查生旺死绝 为养


好了会了么?大家

本程序输出:

run:
此人农历的日期【二零零零年二月初八】
此人八字【庚辰,己卯,庚午,辛巳】
此人的农历生肖【龙】

五行纳音
白蜡金 城墙土 路旁土 白蜡金 
此人大运
庚辰   辛巳   壬午   癸未   甲申   乙酉   丙戌   丁亥   
此人大运生旺死绝
养   长生   沐浴   冠带   临官   帝旺   衰   病   
此人大运十神
比肩   劫财   食神   伤官   偏财   正财   七杀   正官   
成功构建 (总时间: 0 秒)


本文代码引用类的源代码请参考http://blog.csdn.net/luozhuang/article/details/8667624

上代码:

本代码只排大运生旺死绝和十神,八字中还有一个知识点没有介绍,我下次介绍后教大家排

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package luozhuangpaipan;

import java.text.ParseException;
import java.util.Calendar;
import luozhuanghehun.BaZi;
import luozhuanghehun.LuozhuangshenshaHehun;
import luozhuanghehun.luozhuanglvhehun;

/**如何排十神和生旺死绝
 *
 * @author luozhuang 大师♂罗莊
 */
public class luozhuangpaipanshisheng {

    LuozhuangshenshaHehun myLuozhuangshenshaHehun = new LuozhuangshenshaHehun();
    luozhuanglvhehun myluozhuanglvhehun = new luozhuanglvhehun();
    Luozhuangpaipandayun myLuozhuangpaipandayun = new Luozhuangpaipandayun();
    String[][] shisheng = {
        {"日/干", "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"},
        {"甲", "比肩", "劫财", "食神", "伤官", "偏财", "正财", "七杀", "正官", "偏印", "正印"},
        {"乙", "劫财", "比肩", "伤官", "食神", "正财", "偏财", "正官", "七杀", "正印", "偏印"},
        {"丙", "偏印", "正印", "比肩", "劫财", "食神", "伤官", "偏财", "正财", "七杀", "正官"},
        {"丁", "正印", "偏印", "劫财", "比肩", "伤官", "食神", "正财", "偏财", "正官", "七杀"},
        {"戊", "七杀", "正官", "偏印", "正印", "比肩", "劫财", "食神", "伤官", "偏财", "正财"},
        {"己", "正官", "七杀", "正印", "偏印", "劫财", "比肩", "伤官", "食神", "正财", "偏财"},
        {"庚", "偏财", "正财", "七杀", "正官", "偏印", "正印", "比肩", "劫财", "食神", "伤官"},
        {"辛", "正财", "偏财", "正官", "七杀", "正印", "偏印", "劫财", "比肩", "伤官", "食神"},
        {"壬", "食神", "伤官", "偏财", "正财", "七杀", "正官", "偏印", "正印", "比肩", "劫财"},
        {"癸", "伤官", "食神", "正财", "偏财", "正官", "七杀", "正印", "偏印", "劫财", "比肩"},};
    String[][] shengwang = {
        {"天干", "长生", "沐浴", "冠带", "临官", "帝旺", "衰", "病", "死", "墓", "绝", "胎", "养"},
        {"甲", "亥", "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌"},
        {"丙", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子", "丑"},
        {"戊", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子", "丑"},
        {"庚", "巳", "午", "未", "申", "酉", "戌", "亥", "子", "丑", "寅", "卯", "辰"},
        {"壬", "申", "酉", "戌", "亥", "子", "丑", "寅", "卯", "辰", "巳", "午", "未"},
        {"乙", "午", "巳", "辰", "卯", "寅", "丑", "子", "亥", "戌", "酉", "申", "未"},
        {"丁", "酉", "申", "未", "午", "巳", "辰", "卯", "寅", "丑", "子", "亥", "戌"},
        {"己", "酉", "申", "未", "午", "巳", "辰", "卯", "寅", "丑", "子", "亥", "戌"},
        {"辛", "子", "亥", "戌", "酉", "申", "未", "午", "巳", "辰", "卯", "寅", "丑"},
        {"癸", "卯", "寅", "丑", "子", "亥", "戌", "酉", "申", "未", "午", "巳", "辰"},};

    /**
     *
     * @param man 生日 yyyy-MM-dd HH
     * @return
     * @throws ParseException
     */
    public String paipan(String man, luozhuanglvhehun.sex isman) throws ParseException {

        Calendar mancal;

        try {
            mancal = myLuozhuangshenshaHehun.getCalendarfromString(man, "yyyy-MM-dd HH");
            //原来的private 方法改了下
        } catch (ParseException ex) {
            return "输入不正确" + ex.getMessage();
        }

        return paipan(mancal, isman);

    }

    private String paipan(Calendar cal, luozhuanglvhehun.sex isman) throws ParseException {

        BaZi lunar = new BaZi(cal);
        System.out.println("此人农历的日期【" + lunar.toString() + "】");
        /**
         * 很多地方都是按照23:00-1:00为子时这是不对的。
         * 子时24.00-2.00,丑时2.00-4.00,寅时4.00-6.00,卯时6.00-8.00,
         * 辰时8.00-10.00,巳时10.00-12.00,午时12.00-14.00,未时14.00-16.00
         * 申时16.00-18.00,酉时18.00-20.00,戌时20.00-22.00,亥时22.00-24.00
         *
         */
        int time = cal.get(Calendar.HOUR_OF_DAY) / 2;
        System.out.println("此人八字【" + lunar.getYearGanZhi(time) + "】");
        //获取生肖
        System.out.println("此人的农历生肖【" + lunar.animalsYear() + "】");



        String GanZhi = lunar.getYearGanZhi(time);//取八字
        String[] tempchar = GanZhi.split(",");
        //我修改原来的,用,分割
        String ganziyear = tempchar[0];//年柱
        String ganzimonth = tempchar[1];//月柱
        String ganziday = tempchar[2];//日柱
        String ganzitime = tempchar[3];//时柱

        //五行纳音
        System.out.println("");
        String soundyear = myLuozhuangshenshaHehun.getnumsix(ganziyear);
        String soundmonth = myLuozhuangshenshaHehun.getnumsix(ganzimonth);
        String soundday = myLuozhuangshenshaHehun.getnumsix(ganziday);
        String soundtime = myLuozhuangshenshaHehun.getnumsix(ganzitime);
        System.out.println("五行纳音");
        System.out.print(soundyear);
        System.out.print(" ");
        System.out.print(soundmonth);
        System.out.print(" ");
        System.out.print(soundday);
        System.out.print(" ");
        System.out.print(soundtime);
        System.out.print(" ");
        System.out.println("");
        String[] DayunArray = myLuozhuangpaipandayun.Dayun(ganziyear, ganzimonth, isman);


        //排食神生旺死绝
        //用日干 日支分别查找位于表的对应值
        //修改原文的类方法字段属性为public
        //我的表格均是按照顺序比如
        //十天干生旺死绝表 十神概念按顺序排列
        //查找某一行就可以查到对应值
        String[] shengsibiao = {"甲", "丙", "戊", "庚", "壬", "乙", "丁", "己", "辛", "癸"};//十天干生旺死绝表顺序
        //十天干生旺死绝表 用日干查表

        int shengsibiaoshunxu = myLuozhuangpaipandayun.getyuezhuStart(shengsibiao, ganziday.substring(0, 1));
        //十神表按顺序
        int shishengbiaoshunxu = myLuozhuangpaipandayun.getyuezhuStart(BaZi.Gan, ganziday.substring(0, 1));

        shengsibiaoshunxu++;
        shishengbiaoshunxu++;
        String[] DayunArrayshengsi = new String[DayunArray.length];//大运十天干生旺死绝表
        String[] DayunArrayshisheng = new String[DayunArray.length];//大运十神表
        for (int i = 0; i < DayunArray.length; i++) {
            DayunArrayshengsi[i] = shengwang[0][myLuozhuangpaipandayun.getyuezhuStart(shengwang[shengsibiaoshunxu], DayunArray[i].substring(1, 2))]; //十天干生旺死绝表 用干查表

            DayunArrayshisheng[i] = shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(shisheng[0], DayunArray[i].substring(0, 1))]; //十神表 用支查表
        }
        System.out.println("此人大运");
        myLuozhuangpaipandayun.pringst(DayunArray);
        System.out.println("此人大运生旺死绝");
        myLuozhuangpaipandayun.pringst(DayunArrayshengsi);
        System.out.println("此人大运十神");
        myLuozhuangpaipandayun.pringst(DayunArrayshisheng);
        return null;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws ParseException {
        luozhuangpaipanshisheng my = new luozhuangpaipanshisheng();
        my.paipan("2000-3-13 11", luozhuanglvhehun.sex.man);

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值