You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中Switch Case字符转换失效问题排查:拉丁字符转西里尔字符时始终进入默认分支

问题分析与解决

首先明确说,toCharArray()不是问题,你遇到的核心问题是switch语句里每个case后面都没有加break!

为什么会一直进入default分支?

在Java的switch语句中,如果某个case匹配成功后没有break,程序会继续执行后续所有case(包括default)的代码,这叫“贯穿”(fall-through)。比如当匹配到case 'a'时,代码会先把d[i]设为'а',然后因为没有break,会继续执行case 'b'、case 'e'……直到最后执行default,把d[i]又改回了原字符c[i],看起来就像每次都进入了default分支。

修正后的代码

只需要在每个case的代码末尾加上break就可以解决问题,另外还可以去掉多余的强制转换:

public static void main(String[] args) { 
    cyr("abcekmh".toLowerCase().toCharArray()); 
} 
private static void cyr(char[] c) { 
    char[] d = new char[c.length]; 
    for(int i = 0; i < c.length; i++) { 
        switch(c[i]) { // c[i]本身就是char,无需强制转换
            case 'a': 
                d[i] = 'а'; 
                break;
            case 'b': 
                d[i] = 'в'; 
                break;
            case 'e': 
                d[i] = 'е'; 
                break;
            case 'k': 
                d[i] = 'к'; 
                break;
            case 'm': 
                d[i] = 'м'; 
                break;
            case 'h': 
                d[i] = 'н'; 
                break;
            case 'i': 
                d[i] = 'ı'; 
                break;
            case 'o': 
                d[i] = 'о'; 
                break;
            case 'p': 
                d[i] = 'р'; 
                break;
            case 'c': 
                d[i] = 'с'; 
                break;
            case 't': 
                d[i] = 'т'; 
                break;
            case 'y': 
                d[i] = 'у'; 
                break;
            case 'x': 
                d[i] = 'х'; 
                break;
            default: 
                d[i] = c[i]; 
                break; // 加不加都可以,但加上更符合编码规范
        } 
    } 
    for(char russian : d) { 
        System.out.print(russian); 
    } 
}

额外说明

  • toCharArray()完全没问题,它只是把字符串拆成字符数组,和你遇到的switch问题无关。
  • 运行修正后的代码,输入"abcekmh"会正确转换为对应的西里尔字符:авсекмн。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 15:52:44