我不断收到重复的案例错误

时间:2014-01-30 23:41:45

标签: java

import java.util.Scanner;
public class Selection
{
    public static void main (String[] args) throws java.lang.Exception
    {
        char key = 'A';
        Scanner in = new Scanner(System.in);
        System.out.println("Enter a letter to find the corresponding digit on a cellphone: ");
        int digit;
        switch (key) {

            case 'A' & 'B' & 'C': digit = 2;
                break;

            case 'D' & 'E' & 'F': digit = 3;
                break;

            case 'G' & 'H' & 'I': digit = 4;
                break;

            case 'J' & 'K' & 'L': digit = 5;
                break;

            case 'M' & 'N' & '0': digit = 6;
                break;

            case 'P' & 'Q' & 'R' & 'S': digit = 7;
                break;

            case 'T' & 'U' & 'V': digit = 8;
                break;

            case 'W' & 'X' & 'Y' & 'Z': digit = 9;
                break;

            default: System.out.println("There is no matching digit for that character.");

            System.out.println("The letter " + key + " corresponds to the number " + digit + " on a      cellphone.");
        }
    }
}

这是我到目前为止所拥有的。基本上,我需要制作一些字母字符输入并在手机上显示与该字母对应的数字,并且只接受大写字母并在输入其他内容时显示错误。我想要的最后一件事就是有人为我做这件事,我只想要指导。

2 个答案:

答案 0 :(得分:3)

&运营商没有按照您的想法行事。它正在执行按位和字符中的位,并且某些情况的结果是相同的。根据我的IDE,

'A' & 'B' & 'C' => '@'
'G' & 'H' & 'I' => '@'
'P' & 'Q' & 'R' & 'S' => 'P'
'W' & 'X' & 'Y' & 'Z' => 'P'

即使没有重复的情况,您的代码也无法正常工作,因为您有自己没有想到的字符的情况。要为多个案例执行相同的代码,请尝试以下方法:

case A:
case B:
case C:
    digit = 2;
    break;
case D:
case E:
case F:
    digit = 3;
    break;
// and so on

答案 1 :(得分:2)

我想你的意思是

case 'A':
case 'B':
case 'C': domSomethingHere(); break

case 'E':
case 'F':
case 'G': domSomethingHere(); break
相关问题