`
qq1988627
  • 浏览: 103087 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

天干地支算法

    博客分类:
  • Java
 
阅读更多
/** 
* <url>http://en.wikipedia.org/wiki/Sexagenary_cycle</url> 
*/ 
public class Sexagenary {  
    /** 
     * 输入干支,输出对应数值。 
     */ 
    public static int getValue(Stems stems, Branches branches) {  
        int s = stems.ordinal() + 1;  
        int b = branches.ordinal() + 1;  
 
        int value = (6 * s - 5 * b + 60) % 60;  
        return value;  
    }  
      
    /** 
     * 输入数值,输出对应干支(String) 
     */ 
    public static String getStemsBranches(int num) {  
        if (num < 1 || num > 60) {  
            throw new IllegalArgumentException("Error input, num:" + num);  
        }  
 
        int s = ((num % 10) == 0) ? 10 : (num % 10);  
        int b = ((num % 12) == 0) ? 12 : (num % 12);  
          
        Stems stems = Stems.values()[s - 1];  
        Branches branches = Branches.values()[b - 1];  
 
        return "" + stems + branches;  
    }  
          
 
    public static void main(String[] args) {  
        System.out.println(Stems.甲);  
        System.out.println(Sexagenary.getStemsBranches(1)); // 甲子  
        System.out.println(Sexagenary.getStemsBranches(53)); // 丙辰  
        System.out.println("" + Sexagenary.getValue(Stems.甲, Branches.子)); // 1  
        System.out.println("" + Sexagenary.getValue(Stems.丙, Branches.辰)); // 53  
        System.out.println("" + Sexagenary.getValue(Stems.戊, Branches.午)); // 55  
    }  
}  
 
enum Stems {  
    甲, 乙, 丙, 丁, 戊, 己, 庚, 辛, 壬, 癸;  
}  
 
enum Branches {  
    子, 丑, 寅, 卯, 辰, 巳, 午, 未, 申, 酉, 戌, 亥;   
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics