八字易经算法之用JAVA实现完整排盘系统_八字易經演算法之用JAVA實現完整排盤系統 | 學步園...
去年一天,一個朋友去看望病人回來就驚奇的告訴我,他發現和他朋友一起住院(肝膽科)的病人無一例外都是屬相為虎的病人,不是大一輪就是小一輪的。這是為什麼呢?
這不是什麼偶然,也不是什麼巧合。也許通過八字能告訴我們這些,也許通過預測能告訴他們應該早點檢查肝膽,這樣就能找點發現疾病。
一直上網發現有人出軟妹幣求八字易經排盤系統方法或者源代碼,更有此類軟體竟要收費上百元。
我上網查找半天也沒有具體八字易經排盤系統原理的文章。
排盤如同武學中的馬步,拳法,是基礎中的基礎。
作為易學高手的我(大師♂羅莊)對告訴各位碼農如何八字易經排盤系統 負有不可推卸的責任。
經過幾天努力我把整個八字排盤系統開發以及講述清楚了。
希望大家喜歡
這是最終效果:
run:
請輸入你的年月日時間類似 2013-3-14 20
輸入的是:2013-3-15 15
2013-3-15 15
此人農曆的日期【二零一三年二月初四】
此人的農曆生肖【蛇】
此人八字【癸巳 乙卯 庚辰 癸未】
年柱:天乙 太極 天羅 劫煞
月柱:天乙 文昌 災煞 弔客
日柱:十惡大敗日 國印 華蓋 天喜 天羅 寡宿
時柱:空亡 喪門
此人四柱干支十神
傷官 正財 日主 傷官
此人年藏干
丙 七殺 庚 比肩 戊 偏印
此人月藏干
乙 正財
此人日藏干
癸 傷官 乙 正財 戊 偏印
此人時藏干
乙 正財 丁 正官 己 正印
此人大運
甲寅 癸丑 壬子 辛亥 庚戌 己酉 戊申 丁未
此人起大運周歲:
3歲
此人大運生旺死絕
絕 墓 死 病 衰 帝旺 臨官 冠帶
此人大運十神
偏財 傷官 食神 劫財 比肩 正印 偏印 正官
此人大運神煞
天乙 月德 驛馬 弔客 披麻 華蓋 披麻 將星 文昌 驛馬 金輿 紅鸞 元辰 將星 羊刃 空亡 咸池 太極 天德 國印 祿 空亡 空亡 喪門
此人流年
2014甲午 神煞:天乙 月德 空亡 咸池 喪門
2015乙未 神煞:空亡 喪門
2016丙申 神煞:太極 天德 國印 祿 空亡
2017丁酉 神煞:將星 羊刃 空亡 咸池
2018戊戌 神煞:金輿 紅鸞 元辰
2019己亥 神煞:文昌 驛馬
2020庚子 神煞:將星
2021辛丑 神煞:華蓋 披麻
2022壬寅 神煞:天乙 驛馬 弔客 披麻
2023癸卯 神煞:天乙 文昌 弔客
2024甲辰 神煞:月德 國印 華蓋 天喜 天羅
2025乙巳 神煞:天乙 太極 天羅
2026丙午 神煞:天乙 空亡 咸池 喪門
2027丁未 神煞:空亡 喪門
2028戊申 神煞:太極 天德 國印 祿 空亡
2029己酉 神煞:將星 羊刃 空亡 咸池
2030庚戌 神煞:金輿 紅鸞 元辰
2031辛亥 神煞:文昌 驛馬
2032壬子 神煞:將星
2033癸丑 神煞:華蓋 披麻
2034甲寅 神煞:天乙 月德 驛馬 弔客 披麻
2035乙卯 神煞:天乙 文昌 弔客
2036丙辰 神煞:國印 華蓋 天喜 天羅
2037丁巳 神煞:天乙 太極 天羅
2038戊午 神煞:天乙 空亡 咸池 喪門
2039己未 神煞:空亡 喪門
2040庚申 神煞:太極 天德 國印 祿 空亡
2041辛酉 神煞:將星 羊刃 空亡 咸池
2042壬戌 神煞:金輿 紅鸞 元辰
2043癸亥 神煞:文昌 驛馬
2044甲子 神煞:月德 將星
2045乙丑 神煞:華蓋 披麻
2046丙寅 神煞:天乙 驛馬 弔客 披麻
2047丁卯 神煞:天乙 文昌 弔客
2048戊辰 神煞:國印 華蓋 天喜 天羅
2049己巳 神煞:天乙 太極 天羅
2050庚午 神煞:天乙 空亡 咸池 喪門
2051辛未 神煞:空亡 喪門
2052壬申 神煞:太極 天德 國印 祿 空亡
2053癸酉 神煞:將星 羊刃 空亡 咸池
2054甲戌 神煞:月德 金輿 紅鸞 元辰
2055乙亥 神煞:文昌 驛馬
2056丙子 神煞:將星
2057丁丑 神煞:華蓋 披麻
2058戊寅 神煞:天乙 驛馬 弔客 披麻
2059己卯 神煞:天乙 文昌 弔客
2060庚辰 神煞:國印 華蓋 天喜 天羅
2061辛巳 神煞:天乙 太極 天羅
2062壬午 神煞:天乙 空亡 咸池 喪門
2063癸未 神煞:空亡 喪門
2064甲申 神煞:太極 天德 月德 國印 祿 空亡
2065乙酉 神煞:將星 羊刃 空亡 咸池
2066丙戌 神煞:金輿 紅鸞 元辰
2067丁亥 神煞:文昌 驛馬
2068戊子 神煞:將星
2069己丑 神煞:華蓋 披麻
2070庚寅 神煞:天乙 驛馬 弔客 披麻
2071辛卯 神煞:天乙 文昌 弔客
2072壬辰 神煞:國印 華蓋 天喜 天羅
2073癸巳 神煞:天乙 太極 天羅
2074甲午 神煞:天乙 月德 空亡 咸池 喪門
2075乙未 神煞:空亡 喪門
2076丙申 神煞:太極 天德 國印 祿 空亡
2077丁酉 神煞:將星 羊刃 空亡 咸池
2078戊戌 神煞:金輿 紅鸞 元辰
2079己亥 神煞:文昌 驛馬
2080庚子 神煞:將星
2081辛丑 神煞:華蓋 披麻
2082壬寅 神煞:天乙 驛馬 弔客 披麻
2083癸卯 神煞:天乙 文昌 弔客
2084甲辰 神煞:月德 國印 華蓋 天喜 天羅
2085乙巳 神煞:天乙 太極 天羅
2086丙午 神煞:天乙 空亡 咸池 喪門
2087丁未 神煞:空亡 喪門
2088戊申 神煞:太極 天德 國印 祿 空亡
2089己酉 神煞:將星 羊刃 空亡 咸池
2090庚戌 神煞:金輿 紅鸞 元辰
2091辛亥 神煞:文昌 驛馬
2092壬子 神煞:將星
2093癸丑 神煞:華蓋 披麻
此人婚姻神煞:
此人農曆的日期【二零一三年二月初四】
此人八字【癸巳,乙卯,庚辰,癸未】
此人的農曆生肖【蛇】
此人犯狼籍
成功構建 (總時間: 15 秒)
實現功能:
排八字四柱,五行,十神,四柱神煞
大運,大運神煞
流年,流年神煞
婚姻神煞
每一個知識點都在這幾篇文章講述清楚了,代碼裡面該注釋都有了
建議初學者按順序學習
如果對八字有了解,只是為了看看代碼,那麼可以隨意瀏覽
其他輔助文章:
最後要談一個大問題就是怎麼起四柱:
很多地方都是按照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
你試試看這個日期 1961年3月15日
你看看其他
為什麼月柱不對呢?
答:很多演算法都是根據陽曆轉換沒有考慮節氣。
一般節氣過了就算下個月
所以上面文章的月柱算不對
正確代碼用Java 計算節氣的類 演算法來排月柱
本系統完整源代碼:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package luozhuangpaipan;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.util.Calendar;
import luozhuangChineseEra.Lunar;
import luozhuanghehun.BaZi;
import luozhuanghehun.LuozhuangshenshaHehun;
import luozhuanghehun.luozhuanglvhehun;
/**完整排盤系統
*
* @author luozhuang 大師♂羅莊
*/
public class LuozhuangPaipanClass {
LuozhuangshenshaHehun myLuozhuangshenshaHehun = new LuozhuangshenshaHehun();
luozhuanglvhehun myluozhuanglvhehun = new luozhuanglvhehun();
Luozhuangpaipandayun myLuozhuangpaipandayun = new Luozhuangpaipandayun();
LuozhuangshengSha myLuozhuangshengSha = new LuozhuangshengSha();
luozhuangpaipanshisheng myluozhuangpaipanshisheng = new luozhuangpaipanshisheng();
Luozhuangdizhang myLuozhuangdizhang = new Luozhuangdizhang();
/**
*
* @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);
Lunar lunaryue = new Lunar(cal.getTime());
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.animalsYear() + "】");
String GanZhi = lunar.getYearGanZhi(time);//取八字
String[] tempchar = GanZhi.split(",");
//我修改原來的,用,分割
String ganziyear = lunaryue.getCyclicaYear();//年柱
String ganzimonth = lunaryue.getCyclicaMonth();//月柱
String ganziday = lunaryue.getCyclicaDay();//日柱
String ganzitime = tempchar[3];//時柱
System.out.println("此人八字【" + ganziyear + " " + ganzimonth + " " + ganziday + " " + ganzitime + "】");
String[] arrayOfString = new String[9];
arrayOfString[0] = "";
arrayOfString[1] = ganziyear.substring(0, 1);//年干
arrayOfString[2] = ganziyear.substring(1, 2);//年支
arrayOfString[3] = ganzimonth.substring(0, 1);//月干
arrayOfString[4] = ganzimonth.substring(1, 2);//月支
arrayOfString[5] = ganziday.substring(0, 1);//日干
arrayOfString[6] = ganziday.substring(1, 2);//日支
arrayOfString[7] = ganzitime.substring(0, 1);//時干
arrayOfString[8] = ganzitime.substring(1, 2);//時支
System.out.println(myLuozhuangshengSha.shengsha(arrayOfString, 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[] 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.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表
System.out.print(" ");
}
System.out.println("");
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.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表
System.out.print(" ");
}
System.out.println("");
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.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表
System.out.print(" ");
}
System.out.println("");
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.print(myluozhuangpaipanshisheng.shisheng[shishengbiaoshunxu][myLuozhuangpaipandayun.getyuezhuStart(myluozhuangpaipanshisheng.shisheng[0], zhanggan[i])]); //十神表 用支查表
System.out.print(" ");
}
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(myLuozhuangdizhang.dayunkaishi(cal, ganziyear.substring(0,1), isman)+ "歲");
System.out.println("此人大運生旺死絕");
myLuozhuangpaipandayun.pringst(DayunArrayshengsi);
System.out.println("此人大運十神");
myLuozhuangpaipandayun.pringst(DayunArrayshisheng);
String[] DayunArrayshengsha = new String[DayunArray.length];
for (int i = 0; i < DayunArray.length; i++) {
DayunArrayshengsha[i] = myLuozhuangshengSha.shengshadayun(DayunArray[i], arrayOfString, isman);
}
System.out.println("此人大運神煞");
myLuozhuangpaipandayun.pringst(DayunArrayshengsha);
System.out.println("此人流年");
int[] liunianarray = new int[80];
int start = lunar.getnumberYear();
start++;
for (int i = 0; i < liunianarray.length; i++) {
liunianarray[i] = start + i;
}
myLuozhuangpaipandayun.pringst(myLuozhuangshengSha.liunianshensha(liunianarray, arrayOfString, isman));
System.out.println("此人婚姻神煞:");
LuozhuangshenshaHehun myLuozhuangshenshaHehun = new LuozhuangshenshaHehun();
System.out.println(myLuozhuangshenshaHehun.shensha(cal));
return null;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws ParseException, IOException {
LuozhuangPaipanClass my = new LuozhuangPaipanClass();
System.out.println("請輸入你的年月日時間類似 2013-3-14 20");
BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
String a = strin.readLine();
System.out.println("輸入的是:" + a);
my.paipan(a, luozhuanglvhehun.sex.man);
}
}
八字易经算法之用JAVA实现完整排盘系统_八字易經演算法之用JAVA實現完整排盤系統 | 學步園...相关推荐
- 八字易经算法之用JAVA实现完整排盘系统
去年一天,一个朋友去看望病人回来就惊奇的告诉我,他发现和他朋友一起住院(肝胆科)的病人无一例外都是属相为虎的病人,不是大一轮就是小一轮的.这是为什么呢? 这不是什么偶然,也不是什么巧合.也许通过八 ...
- 排序方法python实现_八字排盘,四柱八字排盘算命,免费排八字,卜易居在线排盘系统...
为方便您正确排好八字命盘,请阅读卜易居在线排盘系统之说明: 1. 将年月日时排成命盘,每个时间概念称为一柱,共有四柱:每柱有天干地支两个字,共八个字,故称四柱八字排盘. 2. 公历即是阳历,农历即是阴 ...
- 紫微排盘源码php,易语言紫微斗数排盘模块源码
下面我们对易语言紫微斗数排盘模块源码文件阐述相关使用资料和易语言紫微斗数排盘模块源码文件的更新信息. 易语言紫微斗数排盘模块源码 易语言紫微斗数排盘模块源码 系统结构:紫微斗数排盘,GetStarLe ...
- 网站提示java已被阻止_Win7系统下打开网页提示应用程序已被JAVA安全阻止
打开电脑浏览网页是我们每天都会接触到的事情,而最近,不少网友表示,打开网页浏览的时候会提示"应用程序已被JAVA安全阻止",这是怎么回事呢?应用程序被阻止或是没响应,这些问题都是我 ...
- java:数字转string 报空指针_超干货详解:kotlin(4) java转kotlin潜规则
前言 以一个java老鸟的角度,如何去看 kotlin. Java源代码应该如何用Kotlin重构. 如何正确学习kotlin并且应用到实际开发中.本文将会探究. 本文分两大块,重难点和潜规则. 重难 ...
- java web开源项目源码_超赞!推荐一个专注于Java后端源码分析的Github项目!
大家好,最近有小伙伴们建议我把源码分析文章及源码分析项目(带注释版)放到github上,这样小伙伴们就可以把带中文注释的源码项目下载到自己本地电脑,结合源码分析文章自己本地调试,总之对于学习开源项目源 ...
- java筆試題,Java筆試題附答案 | 學步園
一.單項選擇題 1.Java是從()語言改進重新設計. A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列語句哪一個正確() A. Java程序經編譯後會產生machine ...
- java bigdecimal.valueof_java 中的大數據類型(BigInteger和BigDecimal) | 學步園
一.為什麼為用到BigInteger和BigDecimal這種數據類型呢? 我們非常清楚,java裡面整型int與浮點型float,double它們存放數據的範圍是有邊界的.那麼如果需要更大的數據時, ...
- SSM实现Java版百度网盘系统
0x00前言 这个项目做了很久,主要是模拟百度网盘实现文件在线存储.上传下载.分享以及管理,界面比百度网盘简陋,只有B/S模式,也没有PC客户端和安卓客户端,另外百度网盘的存储服务器其实是分布式的文件 ...
最新文章
- Android 对BaseAdapter做优化处理
- 基于 Storyboard 多种方式的页面跳转、参数传递
- ECShop显示某商品销售累计
- Ionic 标签中添加单击事件 、双击事件
- Linux打开浏览器进程,Linux终端Web浏览器w3m
- linux gedit如何保存 退出
- 注意!这些行为将会影响征信
- opencv图像分析与处理(11)- 频率域滤波消除周期噪声
- [pytorch] 深度学习分割网络U-net的pytorch模型实现 原创 2017年03月08日 21:48:21 标签: python / 深度学习 / 生物图
- KMPlayer 一打开总是出现右面的窗口 导航区 怎样设置不会自动打开
- nyoj 980 格子刷油漆
- 整理了100个Python精选库,建议收藏!
- Easypoi模版导出excel
- [再寄小读者之数学篇](2014-11-02 Herglotz' trick)
- DisplayPort1.4协议学习(一)DP协议概览
- 7月16日周二晚上,陈勇,【敏捷网络课堂第六期】【免费】敏捷开发早期估算...
- 陆奇新东家落定,YC入华将开创另类创投
- Foxit PDF SDK 7.6 for C++/C/JAVA/.NET
- Android本地文件管理器思路解析一一增删改查具体实现
- 【Android】ViewModel KTX对Coroutine的支持