gpt4 book ai didi

java - 为什么会出现这些重复案例?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:42 26 4
gpt4 key购买 nike

我正在尝试将以字母书写的电话号码转换为真正的数字形式。我在 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;
}

最佳答案

好笑的是,我想我知道发生了什么。

当你做 'A' | 'B',您正在对 A 和 B 的字节值 执行按位或运算。您的 IDE 检测到一些结果值是等效的。这绝对不是您想做的。

你想要的更像是:

case 'A':
case 'B':
case 'C':
number.concat("2");
break;
case 'D':
[...]

等等。

参见 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html 上的“SwitchDemo2”了解更多信息。

已验证(使用 Python):

>>> ord('G') | ord('H') | ord('I')
79
>>> ord('J') | ord('K') | ord('L')
79

关于java - 为什么会出现这些重复案例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com