八字易經演算法之用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