Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-字符中的重复大小写标签_Java_Duplicates_Label_Case - Fatal编程技术网

Java-字符中的重复大小写标签

Java-字符中的重复大小写标签,java,duplicates,label,case,Java,Duplicates,Label,Case,由于未知的原因,在这个方法中,只有两个case块中出现了重复的case-label错误。当我在“O”字符上的每个字母飞溅错误中分离案例时,也会出现这种情况。是否可以在不将字母改为小写的情况下修复它 Szyferka(String szyfr){ char []buf = szyfr.toCharArray(); int len=szyfr.length(); for(int i=0; i<len; i++){ switch(buf[i]){

由于未知的原因,在这个方法中,只有两个case块中出现了重复的case-label错误。当我在“O”字符上的每个字母飞溅错误中分离案例时,也会出现这种情况。是否可以在不将字母改为小写的情况下修复它

Szyferka(String szyfr){
    char []buf = szyfr.toCharArray();
    int len=szyfr.length();
    for(int i=0; i<len; i++){
        switch(buf[i]){
            case 'A' | 'B' | 'C': buf[i]='2';
            case 'D' | 'E' | 'F': buf[i]='3';
            case 'G' | 'H' | 'I': buf[i]='4';
            case 'J' | 'K' | 'L': buf[i]='5'; //duplicate case label
            case 'M' | 'N' | 'O': buf[i]='6'; //duplicate case label
            case 'P' | 'Q' | 'R' | 'S': buf[i]='7';
            case 'T' | 'U' | 'V': buf[i]='8';
            case 'W' | 'X' | 'Y' | 'Z': buf[i]='9';
            case '.': buf[i]='1';
            case ' ': buf[i]='0';
        }
    }
}

问题是,您正在使用组合字符-这并没有提供我认为您期望的多个案例。相反,它只是将不同字符的Unicode值与按位OR操作相结合

这将向您显示出现重复案例错误的原因:

System.out.println('G' | 'H' | 'I');
System.out.println('J' | 'K' | 'L');
System.out.println('M' | 'N' | 'O');
所有三行打印79

你真的想要:

case 'A': case 'B': case 'C': buf[i]='2'; break;
case 'D': case 'E': case 'F': buf[i]='3'; break;
etc
我个人也会对此进行改革,但那是另一回事。请注意break语句


您可能还想考虑一个MAP,而不是Switter语句。

< P>问题是,您使用的是组合字符——这不是我希望的那样提供多个情况。相反,它只是将不同字符的Unicode值与按位OR操作相结合

这将向您显示出现重复案例错误的原因:

System.out.println('G' | 'H' | 'I');
System.out.println('J' | 'K' | 'L');
System.out.println('M' | 'N' | 'O');
所有三行打印79

你真的想要:

case 'A': case 'B': case 'C': buf[i]='2'; break;
case 'D': case 'E': case 'F': buf[i]='3'; break;
etc
我个人也会对此进行改革,但那是另一回事。请注意break语句


您可能还想考虑一个MAP,而不是Switter语句。

< P>它们是按位运算符运行的:

System.out.println'J'|'K'|'L'+'J'|'K'|'L'; System.out.println'M'|'N'|'O'+'M'|'N'|'O'

输出-

“J”|“K”|“L”79
“M”|“N”|“O”79

它们起着位运算符的作用-

System.out.println'J'|'K'|'L'+'J'|'K'|'L'; System.out.println'M'|'N'|'O'+'M'|'N'|'O'

输出-

“J”|“K”|“L”79
“M”|“N”|“O”79

@dasblinkenlight:谢谢,我会加上的。@dasblinkenlight:谢谢,我会加上的。