1. 程式人生 > >八字易經演算法之用JAVA實現 地藏十神排法

八字易經演算法之用JAVA實現 地藏十神排法

  序:我們的排盤系統基本做好了。就剩下兩個問題 地藏十神排法 大運起始或者說幾歲上運演算法了

  需要的文章:

  這裡說下就可以了


     地支藏幹 子藏癸 卯藏乙 午藏丁己  酉藏辛
      
     寅藏 甲丙戊  巳藏 丙庚戊  申藏 庚壬戊  亥藏 甲壬
     
       醜藏 辛癸己 辰藏 癸乙戊  未藏 乙丁己  戌藏 丁辛戊

     //排此人四柱十神生旺死絕

        比   印   日元   劫   <- 這裡直接用四柱干支計算 
       乾造  庚    己    庚    辛
           辰    卯    午    巳    
        藏幹  乙戊癸  乙    己丁   庚丙戊  <- 這裡直接用藏幹計算
            才梟傷  才    印官   比殺梟  <- 這裡直接用藏幹計算
       地勢  養    胎    沐浴   長生   <- 藏幹不算生旺死絕
       納音  白蠟金  城牆土  路旁土  白蠟金

   比如看見年支上的辰對照上面口訣 返回癸乙戊

  起大運週歲
     *
     * 大運排法: 陽男陰女順排, 陰男陽女逆排, 離出生日最近的氣節。 三天摺合一歲計, 即一天摺合四個月, 一小時摺合五天. 計算時,
     * 如起運總數為18天, 被3除, 等於6, 即為6歲起大運. 如為19天, 則為6歲4個月起大運.

  直接上程式碼了:

首先我做個公共類,用來普及八字知識的:

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

/**八字公共類
 *
 * @author luozhuang 大師♂羅莊
 */
public class LuozhuangcommonClass {

    /**
     * 返回甲子納音
     *
     * @param paramString 甲子
     * @return 納音
     */
    public static String jiazinaying(String paramString) {
        if ((paramString.equals("甲子")) || (paramString.equals("乙丑"))) {
            return "海中金";
        }
        if ((paramString.equals("丙寅")) || (paramString.equals("丁卯"))) {
            return "爐中火";
        }
        if ((paramString.equals("戊辰")) || (paramString.equals("己巳"))) {
            return "大林木";
        }
        if ((paramString.equals("庚午")) || (paramString.equals("辛未"))) {
            return "路旁土";
        }
        if ((paramString.equals("壬申")) || (paramString.equals("癸酉"))) {
            return "劍鋒金";
        }
        if ((paramString.equals("甲戌")) || (paramString.equals("乙亥"))) {
            return "山頭火";
        }
        if ((paramString.equals("丙子")) || (paramString.equals("丁丑"))) {
            return "澗下水";
        }
        if ((paramString.equals("戊寅")) || (paramString.equals("己卯"))) {
            return "城頭土";
        }
        if ((paramString.equals("庚辰")) || (paramString.equals("辛巳"))) {
            return "白蠟金";
        }
        if ((paramString.equals("壬午")) || (paramString.equals("癸未"))) {
            return "楊柳木";
        }
        if ((paramString.equals("甲申")) || (paramString.equals("乙酉"))) {
            return "泉中水";
        }
        if ((paramString.equals("丙戌")) || (paramString.equals("丁亥"))) {
            return "屋上土";
        }
        if ((paramString.equals("戊子")) || (paramString.equals("己丑"))) {
            return "霹靂火";
        }
        if ((paramString.equals("庚寅")) || (paramString.equals("辛卯"))) {
            return "松柏木";
        }
        if ((paramString.equals("壬辰")) || (paramString.equals("癸巳"))) {
            return "長流水";
        }
        if ((paramString.equals("甲午")) || (paramString.equals("乙未"))) {
            return "沙中金";
        }
        if ((paramString.equals("丙申")) || (paramString.equals("丁酉"))) {
            return "山下火";
        }
        if ((paramString.equals("戊戌")) || (paramString.equals("己亥"))) {
            return "平地木";
        }
        if ((paramString.equals("庚子")) || (paramString.equals("辛丑"))) {
            return "壁上土";
        }
        if ((paramString.equals("壬寅")) || (paramString.equals("癸卯"))) {
            return "金箔金";
        }
        if ((paramString.equals("甲辰")) || (paramString.equals("乙巳"))) {
            return "佛燈火";
        }
        if ((paramString.equals("丙午")) || (paramString.equals("丁未"))) {
            return "天河水";
        }
        if ((paramString.equals("戊申")) || (paramString.equals("己酉"))) {
            return "大驛土";
        }
        if ((paramString.equals("庚戌")) || (paramString.equals("辛亥"))) {
            return "釵釧金";
        }
        if ((paramString.equals("壬子")) || (paramString.equals("癸丑"))) {
            return "桑柘木";
        }
        if ((paramString.equals("甲寅")) || (paramString.equals("乙卯"))) {
            return "大溪水";
        }
        if ((paramString.equals("丙辰")) || (paramString.equals("丁巳"))) {
            return "沙中土";
        }
        if ((paramString.equals("戊午")) || (paramString.equals("己未"))) {
            return "天上火";
        }
        if ((paramString.equals("庚申")) || (paramString.equals("辛酉"))) {
            return "石榴木";
        }
        if ((paramString.equals("壬戌")) || (paramString.equals("癸亥"))) {
            return "大海水";
        }
        return "";
    }
    
      /**
     *    地支藏幹 子藏癸 卯藏乙 午藏丁己  酉藏辛
     *    
     *    寅藏 甲丙戊  巳藏 丙庚戊  申藏 庚壬戊  亥藏 甲壬
     *    
     *    醜藏 辛癸己 辰藏 癸乙戊  未藏 乙丁己  戌藏 丁辛戊

     * @param dizhi
     * @return
     */
    public static String[] dizhuang(String dizhi) {
        String[] returnstring = new String[3];
        if (dizhi.equals("子")) {
            returnstring[0] = "癸";
        }
        if (dizhi.equals("卯")) {
            returnstring[0] = "乙";
        }

        if (dizhi.equals("午")) {
            returnstring[0] = "丁";
            returnstring[1] = "己";
        }

        if (dizhi.equals("酉")) {
            returnstring[0] = "辛";

        }

        if (dizhi.equals("寅")) {
            returnstring[0] = "甲";
            returnstring[1] = "丙";
            returnstring[2] = "戊";


        }

        if (dizhi.equals("巳")) {

            returnstring[0] = "丙";
            returnstring[1] = "庚";
            returnstring[2] = "戊";
        }

        if (dizhi.equals("申")) {

            returnstring[0] = "庚";
            returnstring[1] = "壬";
            returnstring[2] = "戊";
        }

        if (dizhi.equals("亥")) {

            returnstring[0] = "甲";
            returnstring[1] = "壬";

        }

        if (dizhi.equals("醜")) {

            returnstring[0] = "辛";
            returnstring[1] = "癸";
            returnstring[2] = "己";

        }

        if (dizhi.equals("辰")) {

            returnstring[0] = "癸";
            returnstring[1] = "乙";
            returnstring[2] = "戊";

        }

        if (dizhi.equals("未")) {

            returnstring[0] = "乙";
            returnstring[1] = "丁";
            returnstring[2] = "己";

        }

        if (dizhi.equals("戌")) {
            returnstring[0] = "丁";
            returnstring[1] = "辛";
            returnstring[2] = "戊";

        }

        return returnstring;

    }

    /**
     * 十天干生旺死絕表
     *
     * 天干 長生 沐浴 冠帶 臨官 帝旺 衰 病 死 墓 絕 胎 養      *
     * 甲 亥 子 醜 寅 卯 辰 巳 午 未 申 酉 戌
     * 丙 寅 卯 辰 巳 午 未 申 酉 戌 亥 子 醜
     * 戊 寅 卯 辰 巳 午 未 申 酉 戌 亥 子 醜
     * 庚 巳 午 未 申 酉 戌 亥 子 醜 寅 卯 辰
     * 壬 申 酉 戌 亥 子 醜 寅 卯 辰 巳 午 未
     * 乙 午 巳 辰 卯 寅 醜 子 亥 戌 酉 申 未
     * 丁 酉 申 未 午 巳 辰 卯 寅 醜 子 亥 戌
     * 己 酉 申 未 午 巳 辰 卯 寅 醜 子 亥 戌
     * 辛 子 亥 戌 酉 申 未 午 巳 辰 卯 寅 醜
     * 癸 卯 寅 醜 子 亥 戌 酉 申 未 午 巳 辰
     *
     * @param paramString1
     * @param paramString2
     * @return
     */
    public static String shengwang(String paramString1, String paramString2) {
        if (((paramString1.equals("甲")) && (paramString2.equals("亥"))) || ((paramString1.equals("丙")) && (paramString2.equals("寅"))) || ((paramString1.equals("戊")) && (paramString2.equals("寅"))) || ((paramString1.equals("庚")) && (paramString2.equals("巳"))) || ((paramString1.equals("壬")) && (paramString2.equals("申"))) || ((paramString1.equals("乙")) && (paramString2.equals("午"))) || ((paramString1.equals("丁")) && (paramString2.equals("酉"))) || ((paramString1.equals("己")) && (paramString2.equals("酉"))) || ((paramString1.equals("辛")) && (paramString2.equals("子"))) || ((paramString1.equals("癸")) && (paramString2.equals("卯")))) {
            return "長";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("子"))) || ((paramString1.equals("丙")) && (paramString2.equals("卯"))) || ((paramString1.equals("戊")) && (paramString2.equals("卯"))) || ((paramString1.equals("庚")) && (paramString2.equals("午"))) || ((paramString1.equals("壬")) && (paramString2.equals("酉"))) || ((paramString1.equals("乙")) && (paramString2.equals("巳"))) || ((paramString1.equals("丁")) && (paramString2.equals("申"))) || ((paramString1.equals("己")) && (paramString2.equals("申"))) || ((paramString1.equals("辛")) && (paramString2.equals("亥"))) || ((paramString1.equals("癸")) && (paramString2.equals("寅")))) {
            return "沐";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("醜"))) || ((paramString1.equals("丙")) && (paramString2.equals("辰"))) || ((paramString1.equals("戊")) && (paramString2.equals("辰"))) || ((paramString1.equals("庚")) && (paramString2.equals("未"))) || ((paramString1.equals("壬")) && (paramString2.equals("戌"))) || ((paramString1.equals("乙")) && (paramString2.equals("辰"))) || ((paramString1.equals("丁")) && (paramString2.equals("未"))) || ((paramString1.equals("己")) && (paramString2.equals("未"))) || ((paramString1.equals("辛")) && (paramString2.equals("戌"))) || ((paramString1.equals("癸")) && (paramString2.equals("醜")))) {
            return "冠";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("寅"))) || ((paramString1.equals("丙")) && (paramString2.equals("巳"))) || ((paramString1.equals("戊")) && (paramString2.equals("巳"))) || ((paramString1.equals("庚")) && (paramString2.equals("申"))) || ((paramString1.equals("壬")) && (paramString2.equals("亥"))) || ((paramString1.equals("乙")) && (paramString2.equals("卯"))) || ((paramString1.equals("丁")) && (paramString2.equals("午"))) || ((paramString1.equals("己")) && (paramString2.equals("午"))) || ((paramString1.equals("辛")) && (paramString2.equals("酉"))) || ((paramString1.equals("癸")) && (paramString2.equals("子")))) {
            return "臨";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("卯"))) || ((paramString1.equals("丙")) && (paramString2.equals("午"))) || ((paramString1.equals("戊")) && (paramString2.equals("午"))) || ((paramString1.equals("庚")) && (paramString2.equals("酉"))) || ((paramString1.equals("壬")) && (paramString2.equals("子"))) || ((paramString1.equals("乙")) && (paramString2.equals("寅"))) || ((paramString1.equals("丁")) && (paramString2.equals("巳"))) || ((paramString1.equals("己")) && (paramString2.equals("巳"))) || ((paramString1.equals("辛")) && (paramString2.equals("申"))) || ((paramString1.equals("癸")) && (paramString2.equals("亥")))) {
            return "帝";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("辰"))) || ((paramString1.equals("丙")) && (paramString2.equals("未"))) || ((paramString1.equals("戊")) && (paramString2.equals("未"))) || ((paramString1.equals("庚")) && (paramString2.equals("戌"))) || ((paramString1.equals("壬")) && (paramString2.equals("醜"))) || ((paramString1.equals("乙")) && (paramString2.equals("醜"))) || ((paramString1.equals("丁")) && (paramString2.equals("辰"))) || ((paramString1.equals("己")) && (paramString2.equals("辰"))) || ((paramString1.equals("辛")) && (paramString2.equals("未"))) || ((paramString1.equals("癸")) && (paramString2.equals("戌")))) {
            return "衰";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("巳"))) || ((paramString1.equals("丙")) && (paramString2.equals("申"))) || ((paramString1.equals("戊")) && (paramString2.equals("申"))) || ((paramString1.equals("庚")) && (paramString2.equals("亥"))) || ((paramString1.equals("壬")) && (paramString2.equals("寅"))) || ((paramString1.equals("乙")) && (paramString2.equals("子"))) || ((paramString1.equals("丁")) && (paramString2.equals("卯"))) || ((paramString1.equals("己")) && (paramString2.equals("卯"))) || ((paramString1.equals("辛")) && (paramString2.equals("午"))) || ((paramString1.equals("癸")) && (paramString2.equals("酉")))) {
            return "病";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("午"))) || ((paramString1.equals("丙")) && (paramString2.equals("酉"))) || ((paramString1.equals("戊")) && (paramString2.equals("酉"))) || ((paramString1.equals("庚")) && (paramString2.equals("子"))) || ((paramString1.equals("壬")) && (paramString2.equals("卯"))) || ((paramString1.equals("乙")) && (paramString2.equals("亥"))) || ((paramString1.equals("丁")) && (paramString2.equals("寅"))) || ((paramString1.equals("己")) && (paramString2.equals("寅"))) || ((paramString1.equals("辛")) && (paramString2.equals("巳"))) || ((paramString1.equals("癸")) && (paramString2.equals("申")))) {
            return "死";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("未"))) || ((paramString1.equals("丙")) && (paramString2.equals("戌"))) || ((paramString1.equals("戊")) && (paramString2.equals("戌"))) || ((paramString1.equals("庚")) && (paramString2.equals("醜"))) || ((paramString1.equals("壬")) && (paramString2.equals("辰"))) || ((paramString1.equals("乙")) && (paramString2.equals("戌"))) || ((paramString1.equals("丁")) && (paramString2.equals("醜"))) || ((paramString1.equals("己")) && (paramString2.equals("醜"))) || ((paramString1.equals("辛")) && (paramString2.equals("辰"))) || ((paramString1.equals("癸")) && (paramString2.equals("未")))) {
            return "墓";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("申"))) || ((paramString1.equals("丙")) && (paramString2.equals("亥"))) || ((paramString1.equals("戊")) && (paramString2.equals("亥"))) || ((paramString1.equals("庚")) && (paramString2.equals("寅"))) || ((paramString1.equals("壬")) && (paramString2.equals("巳"))) || ((paramString1.equals("乙")) && (paramString2.equals("酉"))) || ((paramString1.equals("丁")) && (paramString2.equals("子"))) || ((paramString1.equals("己")) && (paramString2.equals("子"))) || ((paramString1.equals("辛")) && (paramString2.equals("卯"))) || ((paramString1.equals("癸")) && (paramString2.equals("午")))) {
            return "絕";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("酉"))) || ((paramString1.equals("丙")) && (paramString2.equals("子"))) || ((paramString1.equals("戊")) && (paramString2.equals("子"))) || ((paramString1.equals("庚")) && (paramString2.equals("卯"))) || ((paramString1.equals("壬")) && (paramString2.equals("午"))) || ((paramString1.equals("乙")) && (paramString2.equals("申"))) || ((paramString1.equals("丁")) && (paramString2.equals("亥"))) || ((paramString1.equals("己")) && (paramString2.equals("亥"))) || ((paramString1.equals("辛")) && (paramString2.equals("寅"))) || ((paramString1.equals("癸")) && (paramString2.equals("巳")))) {
            return "胎";
        }
        if (((paramString1.equals("甲")) && (paramString2.equals("戌"))) || ((paramString1.equals("丙")) && (paramString2.equals("醜"))) || ((paramString1.equals("戊")) && (paramString2.equals("醜"))) || ((paramString1.equals("庚")) && (paramString2.equals("辰"))) || ((paramString1.equals("壬")) && (paramString2.equals("未"))) || ((paramString1.equals("乙")) && (paramString2.equals("未"))) || ((paramString1.equals("丁")) && (paramString2.equals("戌"))) || ((paramString1.equals("己")) && (paramString2.equals("戌"))) || ((paramString1.equals("辛")) && (paramString2.equals("醜"))) || ((paramString1.equals("癸")) && (paramString2.equals("辰")))) {
            return "養";
        }
        return "";
    }

    /**
     * 判斷相害 地支六害 子未害 醜午害 寅巳害 卯辰害 申亥害 酉戌害
     *
     * @param paramString1
     * @param paramString2
     * @return
     */
    public static boolean xianghai(String paramString1, String paramString2) {
        return ((paramString1.equals("子")) && (paramString2.equals("未"))) || ((paramString1.equals("未")) && (paramString2.equals("子"))) || ((paramString1.equals("醜")) && (paramString2.equals("午"))) || ((paramString1.equals("午")) && (paramString2.equals("醜"))) || ((paramString1.equals("寅")) && (paramString2.equals("巳"))) || ((paramString1.equals("巳")) && (paramString2.equals("寅"))) || ((paramString1.equals("卯")) && (paramString2.equals("辰"))) || ((paramString1.equals("辰")) && (paramString2.equals("卯"))) || ((paramString1.equals("戌")) && (paramString2.equals("酉"))) || ((paramString1.equals("酉")) && (paramString2.equals("戌"))) || ((paramString1.equals("申")) && (paramString2.equals("亥"))) || ((paramString1.equals("亥")) && (paramString2.equals("申")));
    }

    /**
     * 地支相刑 子卯刑 寅巳申刑 醜未戌刑 辰午醜亥自刑
     *
     * @param paramString1
     * @param paramString2
     * @return
     */
    public static boolean xiangxing(String paramString1, String paramString2) {
        return ((paramString1.equals("子")) && (paramString2.equals("卯"))) || ((paramString1.equals("卯")) && (paramString2.equals("子"))) || ((paramString1.equals("醜")) && (paramString2.equals("未"))) || ((paramString1.equals("未")) && (paramString2.equals("醜"))) || ((paramString1.equals("醜")) && (paramString2.equals("戌"))) || ((paramString1.equals("戌")) && (paramString2.equals("醜"))) || ((paramString1.equals("未")) && (paramString2.equals("戌"))) || ((paramString1.equals("戌")) && (paramString2.equals("未"))) || ((paramString1.equals("巳")) && (paramString2.equals("申"))) || ((paramString1.equals("申")) && (paramString2.equals("巳"))) || ((paramString1.equals("巳")) && (paramString2.equals("寅"))) || ((paramString1.equals("寅")) && (paramString2.equals("巳"))) || ((paramString1.equals("申")) && (paramString2.equals("寅"))) || ((paramString1.equals("寅")) && (paramString2.equals("申"))) || ((paramString1.equals("辰")) && (paramString2.equals("辰"))) || ((paramString1.equals("午")) && (paramString2.equals("午"))) || ((paramString1.equals("酉")) && (paramString2.equals("酉"))) || ((paramString1.equals("亥")) && (paramString2.equals("亥")));
    }

    /**
     * 子、寅、辰、午、申、戌為陽支;醜卯巳未酉亥為陰支
     *
     * @param paramString
     * @return
     */
    public static String yinyang(String paramString) {
        if ((paramString.equals("子")) || (paramString.equals("寅")) || (paramString.equals("辰")) || (paramString.equals("午")) || (paramString.equals("申")) || (paramString.equals("戌"))) {
            return "陽";
        }
        if ((paramString.equals("醜")) || (paramString.equals("卯")) || (paramString.equals("巳")) || (paramString.equals("未")) || (paramString.equals("酉")) || (paramString.equals("亥"))) {
            return "陰";
        }
        return "";
    }

    /**
     * 天干五行 甲乙同屬木, 甲為陽, 乙為陰 丙丁同屬火, 丙為陽, 丁為陰 戊己同屬土, 戊為陽, 己為陰 庚辛同屬金, 庚為陽, 辛為陰
     * 壬癸同屬水, 壬為陽, 癸為陰
     *
     * @param paramString
     * @return
     */
    public static String tianganwuxing(String paramString) {
        if ((paramString.equals("甲")) || (paramString.equals("乙"))) {
            return "木";
        }
        if ((paramString.equals("丙")) || (paramString.equals("丁"))) {
            return "火";
        }
        if ((paramString.equals("戊")) || (paramString.equals("己"))) {
            return "土";
        }
        if ((paramString.equals("庚")) || (paramString.equals("辛"))) {
            return "金";
        }
        if ((paramString.equals("壬")) || (paramString.equals("癸"))) {
            return "水";
        }
        return "";
    }

    /**
     * 地支五行 亥子屬水,巳午屬火,寅卯屬木,申酉屬金,辰醜未戌屬土,醜未為陰土,辰戌為陽土,辰醜為溼土,未戌為燥土。
     *
     * @param paramString
     * @return
     */
    public static String dizhiwuxing(String paramString) {
        if ((paramString.equals("寅")) || (paramString.equals("卯"))) {
            return "木";
        }
        if ((paramString.equals("巳")) || (paramString.equals("午"))) {
            return "火";
        }
        if ((paramString.equals("醜")) || (paramString.equals("辰")) || (paramString.equals("未")) || (paramString.equals("戌"))) {
            return "土";
        }
        if ((paramString.equals("申")) || (paramString.equals("酉"))) {
            return "金";
        }
        if ((paramString.equals("亥")) || (paramString.equals("子"))) {
            return "水";
        }
        return "";
    }

    /**
     * 甲、丙、戊、庚、壬為陽;乙、丁、己、辛、癸為陰
     *
     * @param paramString
     * @return
     */
    public static String tianganyinyang(String paramString) {
        if ((paramString.equals("甲")) || (paramString.equals("丙")) || (paramString.equals("戊")) || (paramString.equals("庚")) || (paramString.equals("壬"))) {
            return "陽";
        }
        if ((paramString.equals("乙")) || (paramString.equals("丁")) || (paramString.equals("己")) || (paramString.equals("辛")) || (paramString.equals("癸"))) {
            return "陰";
        }
        return "";
    }

    /**
     * 桃花位:
     *
     * @param P
     */
    public static void taohua(String[] bazi) {
        String returnString = null;
        if ((bazi[2].equals("寅")) || (bazi[2].equals("午")) || (bazi[2].equals("戌"))) {
            returnString += "卯";
        }
        if ((bazi[2].equals("申")) || (bazi[2].equals("子")) || (bazi[2].equals("辰"))) {
            returnString += "酉";
        }
        if ((bazi[2].equals("亥")) || (bazi[2].equals("卯")) || (bazi[2].equals("未"))) {
            returnString += "子";
        }
        if ((bazi[2].equals("巳")) || (bazi[2].equals("酉")) || (bazi[2].equals("醜"))) {
            returnString += "午";
        }
    }

    /**
     * 六十甲子太歲神
     *
     * @param paramString 年柱
     * @return
     */
    public static String tianshui(String paramString) {
        if (paramString.equals("甲子")) {
            return "金辦將軍";
        }
        if (paramString.equals("乙丑")) {
            return "陳材將軍";
        }
        if (paramString.equals("丙寅")) {
            return "耿章將軍";
        }
        if (paramString.equals("丁卯")) {
            return "沈興將軍";
        }
        if (paramString.equals("戊辰")) {
            return "趙達將軍";
        }
        if (paramString.equals("己巳")) {
            return "郭燦將軍";
        }
        if (paramString.equals("庚午")) {
            return "王清將軍";
        }
        if (paramString.equals("辛未")) {
            return "李素將軍";
        }
        if (paramString.equals("壬申")) {
            return "劉旺將軍";
        }
        if (paramString.equals("癸酉")) {
            return "康志將軍";
        }
        if (paramString.equals("甲戌")) {
            return "施廣將軍";
        }
        if (paramString.equals("乙亥")) {
            return "任保將軍";
        }
        if (paramString.equals("丙子")) {
            return "郭嘉將軍";
        }
        if (paramString.equals("丁丑")) {
            return "汪文將軍";
        }
        if (paramString.equals("戊寅")) {
            return "曾光將軍";
        }
        if (paramString.equals("己卯")) {
            return "龍仲將軍";
        }
        if (paramString.equals("庚辰")) {
            return "董德將軍";
        }
        if (paramString.equals("辛巳")) {
            return "鄭但將軍";
        }
        if (paramString.equals("壬午")) {
            return "陸明將軍";
        }
        if (paramString.equals("癸未")) {
            return "魏仁將軍";
        }
        if (paramString.equals("甲申")) {
            return "方傑將軍";
        }
        if (paramString.equals("乙酉")) {
            return "蔣崇將軍";
        }
        if (paramString.equals("丙戌")) {
            return "白敏將軍";
        }
        if (paramString.equals("丁亥")) {
            return "封濟將軍";
        }
        if (paramString.equals("戊子")) {
            return "鄒鏜將軍";
        }
        if (paramString.equals("己丑")) {
            return "潘佐將軍";
        }
        if (paramString.equals("庚寅")) {
            return "鄔桓將軍";
        }
        if (paramString.equals("辛卯")) {
            return "範寧將軍";
        }
        if (paramString.equals("壬辰")) {
            return "彭泰將軍";
        }
        if (paramString.equals("癸巳")) {
            return "徐華將軍";
        }
        if (paramString.equals("甲午")) {
            return "章詞將軍";
        }
        if (paramString.equals("乙未")) {
            return "楊仙將軍";
        }
        if (paramString.equals("丙申")) {
            return "管仲將軍";
        }
        if (paramString.equals("丁酉")) {
            return "唐傑將軍";
        }
        if (paramString.equals("戊戌")) {
            return "姜武將軍";
        }
        if (paramString.equals("己亥")) {
            return "謝燾將軍";
        }
        if (paramString.equals("庚子")) {
            return "虞起將軍";
        }
        if (paramString.equals("辛丑")) {
            return "楊信將軍";
        }
        if (paramString.equals("壬寅")) {
            return "賢諤將軍";
        }
        if (paramString.equals("癸卯")) {
            return "皮時將軍";
        }
        if (paramString.equals("甲辰")) {
            return "李誠將軍";
        }
        if (paramString.equals("乙巳")) {
            return "吳遂將軍";
        }
        if (paramString.equals("丙午")) {
            return "文哲將軍";
        }
        if (paramString.equals("丁未")) {
            return "繆丙將軍";
        }
        if (paramString.equals("戊申")) {
            return "徐浩將軍";
        }
        if (paramString.equals("己酉")) {
            return "程寶將軍";
        }
        if (paramString.equals("庚戌")) {
            return "倪祕將軍";
        }
        if (paramString.equals("辛亥")) {
            return "葉堅將軍";
        }
        if (paramString.equals("壬子")) {
            return "丘德將軍";
        }
        if (paramString.equals("癸丑")) {
            return "朱得將軍";
        }
        if (paramString.equals("甲寅")) {
            return "張朝將軍";
        }
        if (paramString.equals("乙卯")) {
            return "萬清將軍";
        }
        if (paramString.equals("丙辰")) {
            return "辛亞將軍";
        }
        if (paramString.equals("丁巳")) {
            return "楊彥將軍";
        }
        if (paramString.equals("戊午")) {
            return "黎卿將軍";
        }
        if (paramString.equals("己未")) {
            return "傅黨將軍";
        }
        if (paramString.equals("庚申")) {
            return "毛梓將軍";
        }
        if (paramString.equals("辛酉")) {
            return "石政將軍";
        }
        if (paramString.equals("壬戌")) {
            return "洪充將軍";
        }
        if (paramString.equals("癸亥")) {
            return "虞程將軍";
        }
        return "";
    }

    /**
     * 所謂命主文昌位,就是根據個人的生辰八字來推算,按照這個方法推算出來的文昌位是跟隨個人,永不改變的。個人的命主文昌位如何確定?有這樣一個推算的歌訣:甲歲亥巳曲與昌,乙逢馬鼠煥文章,丙戊申寅庚亥巳,六丁雞兔貴非常,壬遇虎猴癸兔西,辛宜子上馬名揚。歌訣的意思是:出生在甲年的人,文昌位在東南。出生在乙年,文昌位在正南。出生在丙年,文昌位在西南。出生在丁年,文昌位在正西。出生在戊年,文昌位在西南。出生在己年,文昌位在正西。出生在庚年,文昌位在西北。出生在辛年,文昌位在正北。出生在壬年,文昌位在東北。出生在癸年,文昌位在正東。
     * 人又是如何得知自己出生在那年?這裡有一套公式可以推算。凡尾數是4的年份,如2004年,即是甲年。以此類推,尾數是5的年份,即是乙年。尾數是6的年份,即是丙年。尾數是7的年份,即是丁年。尾數是8的年份,即是戊年。尾數是9的年份,即是己年。尾數是0的年份,即是庚年。尾數是1的年份,即是辛年。尾數是2的年份,即是壬年。尾數是3的年份,即是癸年。例如1013年,即是癸年。以自己的出生年份對應上面兩個公式來推算,即可知道自己的命主文昌位在哪個位置。
     *
     * @param year 年份
     * @return 文昌位:
     */
    public static String wenchangwei(String year) {
        String returnString = "文昌位:";
        if (String.valueOf(year).substring(3, 4).equals("4")) {
            returnString += "東南";
        }
        if (String.valueOf(year).substring(3, 4).equals("5")) {
            returnString += "南方";
        }
        if (String.valueOf(year).substring(3, 4).equals("6")) {
            returnString += "西南";
        }
        if (String.valueOf(year).substring(3, 4).equals("8")) {
            returnString += "西南";
        }
        if (String.valueOf(year).substring(3, 4).equals("7")) {
            returnString += "西方";
        }
        if (String.valueOf(year).substring(3, 4).equals("9")) {
            returnString += "西方";
        }
        if (String.valueOf(year).substring(3, 4).equals("0")) {
            returnString += "西北";
        }
        if (String.valueOf(year).substring(3, 4).equals("1")) {
            returnString += "北方";
        }
        if (String.valueOf(year).substring(3, 4).equals("2")) {
            returnString += "東北";
        }
        if (String.valueOf(year).substring(3, 4).equals("3")) {
            returnString += "東方";
        }
        return returnString;
    }

   
}


/*
 * 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 java.util.Date;
import luozhuangChineseEra.Lunar;
import luozhuanghehun.BaZi;
import luozhuanghehun.LuozhuangshenshaHehun;
import luozhuanghehun.luozhuanglvhehun;

/**
 * 地藏和大運起始排盤
 *
 * @author luozhuang 大師♂羅莊
 */
public class Luozhuangdizhang {

    LuozhuangshenshaHehun myLuozhuangshenshaHehun = new LuozhuangshenshaHehun();
    luozhuanglvhehun myluozhuanglvhehun = new luozhuanglvhehun();
    Luozhuangpaipandayun myLuozhuangpaipandayun = new Luozhuangpaipandayun();
    LuozhuangshengSha myLuozhuangshengSha = new LuozhuangshengSha();
    luozhuangpaipanshisheng myluozhuangpaipanshisheng = new luozhuangpaipanshisheng();

    /**
     * 起大運週歲
     *
     * 大運排法: 陽男陰女順排, 陰男陽女逆排, 離出生日最近的氣節。 三天摺合一歲計, 即一天摺合四個月, 一小時摺合五天. 計算時,
     * 如起運總數為18天, 被3除, 等於6, 即為6歲起大運. 如為19天, 則為6歲4個月起大運.
     *
     * @param bazi 八字陽曆
     * @return
     */
    public long dayunkaishi(Calendar bazi, String nianzhu, luozhuanglvhehun.sex isman) {

        long returnvalue = 0;
        //甲、丙、戊、庚、壬之年為陽,乙、丁、己、辛、癸之年為陰
        //陰年生男子(或陽年生女子),大運逆行否則順行
        if (LuozhuangcommonClass.tianganyinyang(nianzhu).equals("陽")) {
            if (isman == luozhuanglvhehun.sex.man) {//順行
                returnvalue = Lunar.getaftersolarTerm(bazi.get(Calendar.YEAR), bazi.getTime());
            } else {
                returnvalue = Lunar.getbeforesolarTerm(bazi.get(Calendar.YEAR), bazi.getTime());
            }

        } else {
            if (isman == luozhuanglvhehun.sex.man) {
                returnvalue = Lunar.getbeforesolarTerm(bazi.get(Calendar.YEAR), bazi.getTime());
            } else {
                returnvalue = Lunar.getaftersolarTerm(bazi.get(Calendar.YEAR), bazi.getTime());
            }
        }
        returnvalue = returnvalue / 3;//我們就不細算到月日

        return returnvalue;



    }

    /**
     *
     * @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);

    }

    public 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("");
        
        
         //排食神生旺死絕
        //用日干 日支分別查詢位於表的對應值
        //修改原文的類方法欄位屬性為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[] DayunArray = myLuozhuangpaipandayun.Dayun(ganziyear, ganzimonth, isman);
        
         //排此人四柱十神生旺死絕

        //       比    印    日元   劫   <- 這裡直接用四柱干支計算 
        //乾造  庚    己    庚    辛
        //    辰    卯    午    巳    
        //藏幹  乙戊癸  乙    己丁   庚丙戊  <- 這裡直接用藏幹計算
        //    才梟傷  才    印官   比殺梟  <- 這裡直接用藏幹計算
        //地勢  養    胎    沐浴   長生   <- 藏幹不算生旺死絕
        //納音  白蠟金  城牆土  路旁土  白蠟金

        System.out.println("此人四柱干支十神");
        System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], ganziyear.substring(0, 1))]); //十神表 用支查表
        System.out.print(" ");
        System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], ganzimonth.substring(0, 1))]); //十神表 用支查表
        System.out.print(" ");
        System.out.print("日主"); //日柱不計算!
        System.out.print(" ");
        System.out.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], ganzitime.substring(0, 1))]); //十神表 用支查表

        System.out.println("");

        System.out.println("此人年藏幹");
        String[] zhanggan = LuozhuangcommonClass.dizhuang(ganziyear.substring(1, 2));
        for (int i = 0; i < zhanggan.length; i++) {

            if (zhanggan[i] == null) {
                continue;
            }
            System.out.print(zhanggan[i]);
            System.out.print("");
            System.out.println(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表

        }

        zhanggan = LuozhuangcommonClass.dizhuang(ganzimonth.substring(1, 2));
        System.out.println("此人月藏幹");

        for (int i = 0; i < zhanggan.length; i++) {
            if (zhanggan[i] == null) {
                continue;
            }
            System.out.print(zhanggan[i]);
            System.out.print("");
            System.out.println(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表

        }

        System.out.println("此人日藏幹");
        zhanggan = LuozhuangcommonClass.dizhuang(ganziday.substring(1, 2));
        for (int i = 0; i < zhanggan.length; i++) {
            if (zhanggan[i] == null) {
                continue;
            }
            System.out.print(zhanggan[i]);
            System.out.print("");
            System.out.println(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表

        }


        System.out.println("此人時藏幹");
        zhanggan = LuozhuangcommonClass.dizhuang(ganzitime.substring(1, 2));
        for (int i = 0; i < zhanggan.length; i++) {
            if (zhanggan[i] == null) {
                continue;
            }
            System.out.print(zhanggan[i]);
            System.out.print("");
            System.out.println(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表

        }


       
        String[] DayunArrayshengsi = new String[DayunArray.length];//大運十天干生旺死絕表
        String[] DayunArrayshisheng = new String[DayunArray.length];//大運十神表


        for (int i = 0; i < DayunArray.length; i++) {
            DayunArrayshengsi[i] = myluozhuangpaipanshisheng.shengwang[0][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shengwang[shengsibiaoshunxu], DayunArray[i].substring(1, 2))]; //十天干生旺死絕表 用幹查表

            DayunArrayshisheng[i] = myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], DayunArray[i].substring(0, 1))]; //十神表 用支查表


        }
        System.out.println("此人大運");
        myLuozhuangpaipandayun.pringst(DayunArray);

        System.out.println("此人起大運週歲:");
        System.out.println(dayunkaishi(cal, ganziyear.substring(0,1), isman) + "歲");

        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 {
        Luozhuangdizhang my = new Luozhuangdizhang();
        my.paipan("2013-3-14 20", luozhuanglvhehun.sex.man);

    }
}


相關推薦

八字演算法JAVA實現

  序:我們的排盤系統基本做好了。就剩下兩個問題 地藏十神排法 大運起始或者說幾歲上運演算法了   需要的文章:   這裡說下就可以了      地支藏幹 子藏癸 卯藏乙 午藏丁己  酉藏辛             寅藏 甲丙戊  巳藏 丙庚戊  申藏 庚壬戊 

合婚演算法JAVA實現本命卦合婚

  問題:我輸入 男方的生日:1980-01-01  01:01:01 女方生日:1980-01-01  01:01:01    跪求這樣一個八字合婚演算法    合婚軟體似乎很多,關鍵是怎麼去寫或者說演算法,網路上幾乎沒有類似文章   作為易學高手的我(大師♂羅莊)對告

再談java實現Smtp發送郵件Socket編程

~~ 成功 剛才 還要 登陸 computer and ont sys 很多其它內容歡迎訪問個人站點 http://icodeyou.com 前幾天利用Socket實現了用java語言搭建webserver,全程下來應該會對Socket這

Java實現隊列

ring idt style enqueue 元素 java 出隊 入隊 span 隊列是一種典型的先進先出數據結構,隊列的實現方式有很多種,比如數組,比如鏈表等,隊列也可以用兩個棧來實現,下面就用兩個棧實現一個隊列。 原理   兩個棧中,一個棧用來入隊,叫他入隊棧,另

java實現七種排序演算法

 很多時候,聽別人在討論快速排序,選擇排序,氣泡排序等,都覺得很牛逼,心想,臥槽,排序也分那麼多種,就覺得別人很牛逼呀,其實不然,當我們自己去了解學習後發現,並沒有想象中那麼難,今天就一起總結一下各種排序的實現原理並加以實現。                         -WH 一、文章

【神經網路入門】JAVA實現感知器演算法

簡述 隨著網際網路的高速發展,A(AI)B(BigData)C(Cloud)已經成為當下的核心發展方向,假如三者深度結合的話,AI是其中最核心的部分。所以如果說在未來社會,每個人都必須要學會程式設計的話,那麼對於程式設計師來說,人工智慧則是他們所必須掌握的技術(科技發展真tm快)。 這篇文章介紹

java實現各種排序演算法

package Com.Sort; /** * 各種高階排序方法的實現 * * @author Jane */ public class AdvanceSort { // 列印陣列 public static <T extends Comparable<?

一個Java實現密碼演算法,使用socket引發的血案

public static void main(String[] args) throws IOException, ParseException { ServerSocket serverSocket = new ServerSocket(1

3. 排序通常有多種演算法,如氣泡排序、插入排序、選擇排序、希爾排序、歸併排序、快速排序,請選擇任意2種java實現 [分值:20] 您的回答:(空) (簡答題需要人工評分)

3. 排序通常有多種演算法,如氣泡排序、插入排序、選擇排序、希爾排序、歸併排序、快速排序,請選擇任意2種用java實現  [分值:20] 您的回答:(空)  (簡答題需要人工評分) package com.interview; /** * 各種排序演算法 */

java筆試題:java實現字串壓縮演算法

題目:將字串 aaabcdda (可以從控制檯接收)程式設計實現將其轉換為 3a1b1c2d1a。 我的大致就這樣: System.out.print("請輸入一串字串:"); Scanner s = new Scanner(System.in); String str

演算法學習(java實現字串)·····旋轉字串

給定一個字串和一個偏移量,根據偏移量旋轉字串(從左向右旋轉) 樣例 給出字串"abcdefg" 如果偏移量offset=0,返回"abcdefg" 如果偏移量offset=1,返回"gabcdef" 如果偏移量offset=2,返回"fgabcde" 如果偏移量offse

java實現的簡單的二分查詢演算法

一、什麼是二分查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,

無聊的時候java實現的推箱子演算法~

相信對於推箱子這種東西大家都一定很熟悉了吧,本人身為一個宅男最近迷上了一款叫做遊戲俱樂部的game,聽上去是不是很高大上的樣子。。。結果----這TM不就是個推箱子麼!!! 當時被這個關卡卡的欲仙欲死。。。所以果斷拿出了自己大學的存貨,自動推箱子搞起! ---------

Java實現雲音樂爬蟲(非selenium)

主要內容: 使用httpclient(非模擬瀏覽器) 使用網易雲音樂api 採集:評論和使用者最近聽歌的統計 思路: 用一首歌的id作為入口,得到下面的所有評論 –> 取出

Java 實現的八種常用排序演算法

> 八種排序演算法可以按照如圖分類 ![](https://img2020.cnblogs.com/blog/1759254/202010/1759254-20201013141619825-490940992.png) ## 交換排序 所謂交換,就是序列中任意兩個元素進行比較,根據比較結果來交

init.rc文件中面啟動c++程序,通過jni調java實現

mini val sni ril urn runtime sport mco env </pre><p>註:假設是自己的myself.jar包,還要修改例如以下:</p><p>target/product/core_bas

java實現一個簡單的單戶登陸功能的思路

get 單用戶 這樣的 簡單的 lock ref 數據庫 清除 一個 引用 所謂“單用戶單賬戶登錄”是指:在同一系統中,一個用戶名不能在兩個地方同時登錄。 我們參照 QQ 實現效果:當某賬號在 A 處登錄後,在未退出的情況下,如果再到 B 處登錄,那麽,系統會擠下 A 處

java實現的strstr函數的一些問題

符號 clas bsp 問題: pub spa 操作 記錄 位置 用java實現過程如下: 1 public static int strstr(char[] cArray1,char[] cArray2){ 2 if(cArray1!=null &&

Java實現的選擇排序和冒泡排序

auth main sta -i str public java index 選擇 選擇排序 package cn.hxd.sort; /** * 選擇排序 * @author Administrator * */ public class SelectionSo

Java實現字母排列的三角形

int true bst 字母 main println logs abcd rgs public class HomeWork03 { public static void main(String[] args) { String st