You need to enable JavaScript to run this app. 如何在Java中将用户输入的两位字母国家代码按字母表位置转换为数字
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中将用户输入的两位字母国家代码按字母表位置转换为数字

实现方案

整个逻辑非常轻量,不需要引入任何第三方依赖,纯JDK就能完成,核心思路拆成四步走:

  • 先做输入合法性校验,避免非法值导致程序抛出不友好的底层报错
  • 把输入的两位代码统一转成大写,兼容用户不小心输小写的场景
  • 逐字符计算每个字母对应的表中序号:利用ASCII码的偏移特性,大写A的ASCII值是固定的,字符减去'A'的偏移再加1,就能直接得到1-26的对应序号,不用手写A-Z的映射表
  • 把两个计算好的序号直接作为字符串拼接,不要做数值计算,最后返回拼接好的结果就行
可直接复用的代码

写了个新手也能看懂的工具类,复制过去就能跑:

public class CountryCodeTool {
    /**
     * 两位字母国家代码转拼接数字
     * @param rawCode 用户输入的两位国家代码
     * @return 规则对应的拼接数字字符串
     */
    public static String convertCode(String rawCode) {
        // 基础长度校验
        if (rawCode == null || rawCode.length() != 2) {
            throw new IllegalArgumentException("请输入长度为2的字母国家代码");
        }
        String upperCode = rawCode.toUpperCase();
        StringBuilder res = new StringBuilder();
        for (char c : upperCode.toCharArray()) {
            // 字符合法性校验
            if (c < 'A' || c > 'Z') {
                throw new IllegalArgumentException("输入包含非字母字符:" + c);
            }
            // 计算字母在拉丁字母表的位置
            int pos = c - 'A' + 1;
            res.append(pos);
        }
        return res.toString();
    }

    public static void main(String[] args) {
        // 跑示例FR测试用例
        System.out.println(convertCode("FR")); // 输出618,和预期完全一致
        System.out.println(convertCode("fr")); // 兼容小写输入,同样输出618
        System.out.println(convertCode("BJ")); // 测试边界:B=2, J=10,输出210
    }
}
新手容易踩的坑
  • 最容易错的点:别想着把两个序号加起来凑数字,比如FR算出来6和18,做加法得到24就完全错了,必须是字符串层面的直接拼接
  • 别省掉校验逻辑:用户可能输3位、输带数字的内容,提前做校验抛出明确的提示,比让程序抛个空指针、数组越界好用太多
  • 不用写A到Z的硬编码映射表:靠ASCII偏移算出来的结果和硬编码完全一致,代码更简洁也不会出漏

内容的提问来源于stack exchange,提问作者404uname

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.13 16:36:04