ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

[java]干支纪年法(循环练习)

2021-11-21 09:03:43  阅读:247  来源: 互联网

标签:12 java String 纪年 System int 余数 干支 地支


干支纪年法属于上古以来中国纪年历法,其由十天干十二地支按照一定顺序结合来表示年份.

十天干分别为:

甲、乙、丙、丁、戊、己、庚、辛、壬、癸

十二地支分别为:

子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥

干支纪年基本规则:

 甲子、乙丑......癸酉对应结束后此时应当对应甲戊,乙亥,丙子.........

以此类推,所以干支纪年法六十年一轮回.

当我们想要用循环输出一个轮回的干支纪年法的时候,基本思路如下:

1、创建两个数组分存放天干地支

2、使用for循环依次输出对应天干地支

代码如下:

public class practice {
    public static void main(String[] args) {
        String sky[] = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
        String land[] = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};
        String[] array = new String[60];
        int j = 0;
        int freq = 0;
        int k=0;
        while(freq < 60){   //打印六十次
            for(int i = 0;i < 10;i++){     //十天干
                if(j == 12){          //十二地支,由于数组下标从0开始,所以当地支等于十二时归零
                    j = 0;
                }
                System.out.print(" "+sky[i]+land[j]+"年");
                k++;
                if(k==12){  //为方便检查,一行打印十二次后回车
                    System.out.println();
                    k=0;
                }
                freq++;   //打印次数
                j++;
            }
        }
    }

结果如下:

 

特别注意的是当地支到11时就需要归零,否则打印时就会访问越界

下面看下如何输入一个年份判断其是什么年:

判断方法:

天干:用年份减3除10,取余数(余数1,2,3,4,5......9,0,分别对应甲,乙,丙,丁......癸)

地支:用年份减3除12,取余数(余数1,2,3,4,5......11,0,分别对应子,丑,寅,卯......亥)

代码如下:

import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
        String sky[] = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
        String land[] = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入年份:");
        int input = scanner.nextInt();
        int i = (input - 3) % 10;   //计算天干
        int j = (input - 3) % 12;   //计算地支
        if (i == 0) {
            i = 10;      //余数为0对应天干最后一个
        }
        if (j == 0) {
            j = 12;      //余数为0对应地支最后一个
        }
            System.out.println(input + "是" + sky[i - 1] + land[j - 1] + "年");
    }
}

结果:

 

标签:12,java,String,纪年,System,int,余数,干支,地支
来源: https://blog.csdn.net/weixin_59094759/article/details/121447283

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有