奖项届定获取方式

问题:

我需要一个java方法,传入年份获取字符串描述值。如一个奖项是每两年举办一届,起始年份为2024年首届,26年为第二届,28年为第三届,以此类推。返回第几届问题。

核心处理方式:

届数 = (目标年份 - 起始年份) / 周期 + 1

例如:2026年 → (2026-2024)/2 + 1 = 2 → 第二届

处理工具类:

java 复制代码
/**
 * 计算奖项届数
 * 规则:每两年一届,2024年为首届,2026年第二届,以此类推
 * 
 * @param year 目标年份
 * @return 届数描述,如"第一届"、"第二届"等
 */
public static String getAwardSession(int year) {
    // 起始年份
    final int startYear = 2024;
    // 举办周期(每2年一届)
    final int cycle = 2;
    
    // 检查年份是否合法(必须是偶数年且不小于起始年份)
    if (year < startYear) {
        return "该年份尚未举办";
    }
    
    // 计算与起始年份的差值
    int diff = year - startYear;
    
    // 检查是否是举办年份(差值必须是周期的整数倍)
    if (diff % cycle != 0) {
        return "该年份不举办";
    }
    
    // 计算届数(差值除以周期 + 1,因为2024年是第一届)
    int session = diff / cycle + 1;
    
    // 转换为中文数字
    return "第" + numberToChinese(session) + "届";
}

/**
 * 将数字转换为中文数字(支持1-99)
 */
private static String numberToChinese(int num) {
    if (num <= 0 || num > 99) {
        return String.valueOf(num);
    }
    
    String[] chineseDigits = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
    String[] chineseUnits = {"", "十", "百"};
    
    if (num < 10) {
        return chineseDigits[num];
    }
    
    int tens = num / 10;
    int ones = num % 10;
    
    StringBuilder result = new StringBuilder();
    
    // 处理十位
    if (tens == 1) {
        // 10-19,"十"前面不加"一"
        result.append(chineseUnits[1]);
    } else {
        result.append(chineseDigits[tens]).append(chineseUnits[1]);
    }
    
    // 处理个位
    if (ones > 0) {
        result.append(chineseDigits[ones]);
    }
    
    return result.toString();
}

// 测试
public static void main(String[] args) {
    System.out.println(getAwardSession(2024)); // 第一届
    System.out.println(getAwardSession(2026)); // 第二届
    System.out.println(getAwardSession(2028)); // 第三届
    System.out.println(getAwardSession(2030)); // 第四届
    System.out.println(getAwardSession(2025)); // 该年份不举办
    System.out.println(getAwardSession(2022)); // 该年份尚未举办
    System.out.println(getAwardSession(2042)); // 第十届
}

方法特点:

1、自动校验年份是否合法(必须≥2024且符合举办周期)

2、支持中文数字转换(第一届、第十届、第二十届等)

3、对非举办年份给出明确提示

相关推荐
SL_staff29 分钟前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶36 分钟前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
秋天的怀念_David1 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
Java码农也是农1 小时前
Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选
java·spring boot·spring·事务
学长毕设2 小时前
基于SpringBoot的游乐园管理系统-附源码
java·spring boot·后端
SimonKing2 小时前
震惊:怎么回事,opencode一轮对话耗尽免费额度
java·后端·程序员
装不满的克莱因瓶2 小时前
【SpringAI Alibaba】ReactAgent响应SSE实时流式传输案例实战
java·人工智能·ai·sse·springai
杨凯凡3 小时前
Spring Boot 文件上传怎么做才安全?流式落盘、路径校验与数据库一致性实战
java·spring boot·文件上传·后端安全·数据库一致性
这个昵称不容易3 小时前
旅游管理系统的设计与实现(SpringBoot + MySQL + Vue 前后端分离)
java·springboot·毕设
Rain的Java大神之路3 小时前
LeetCode 37 解数独面试攻略:回溯 + 位掩码 + MRV,从暴力到毫秒级求解
java·后端·leetcode