【发布时间】:2013-10-27 23:12:54
【问题描述】:
我正在尝试将用字母书写的电话号码转换为其真正的数字形式。我在 for 循环中有这个 switch 语句,它查看字符串的每个字符,但是 eclipse 说我有重复的情况('G' | 'H' | 'I', 'J' | 'K' | ' L', 'M' | 'N' | 'O') 我不明白为什么?
switch(parts[1].charAt(i)){
case 'A' | 'B' | 'C' : number.concat("2"); break;
case 'D' | 'E' | 'F' : number.concat("3"); break;
case 'G' | 'H' | 'I' : number.concat("4"); break;
case 'J' | 'K' | 'L' : number.concat("5"); break;
case 'M' | 'N' | 'O' : number.concat("6"); break;
case 'P' | 'Q' | 'R' | 'S' : number.concat("7"); break;
case 'T' | 'U' | 'V' : number.concat("8"); break;
case 'W' | 'X' | 'Y' | 'Z' : number.concat("9"); break;
}
【问题讨论】:
-
因为这不是您处理多个案例的方式。检查您的 Java 语法:docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
-
当有人试图猜测构造的语法时会发生这种情况......并且他们猜错了。下次,尝试检查书籍或教程中的语法。当您不熟悉一种语言时,这总是一个好主意。
-
我了解如何使用开关,包括掉线,我想我只是不了解位操作的作用。
-
如果你不知道
|,就假装它是+。无论哪种方式,开关都不会测试单个字母,因为它会测试组合数值,丢失有关用于创建组合值的字母的信息。
标签: java string char switch-statement case