switch语句中有多个字符?

时间:2013-01-30 18:26:12

标签: java switch-statement case

只是为了澄清这是hw。

在我们正在进行的项目中,不允许用户输入数字或特殊字符(即!@£等)

        char letter;
        String phonetic;

        Scanner kb = new Scanner(System.in);


        System.out.print("Please enter a letter: ");
        letter = letter = kb.next().charAt(0);

        switch(Character.toUpperCase(letter))
{
       case 'A':
            {
                Dot();
                Dash();
                Red();
            }
            break;

        case '1,2,3,4,5,6,7,8,9,0':
            {
               System.out.println('No number input please!');
            }
        break;
}

错误已开启

'1,2,3,4,5,6,7,8,9,0' 

Eclipse说

invalid character constant 

如果我必须手动输入所有数字,是不是真的很长?

即。案例'1':案例'2':

即使

case 1,2,3,4,5,6,7,8,9,0: 

它无效。

使用switch语句有没有更短的方法?

谢谢!

5 个答案:

答案 0 :(得分:3)

因为Case表达式应该是来自 java 7 int-compatible literalString

case '1,2,3,4,5,6,7,8,9,0':

字符文字用单引号表示。 c,它应该只有一个长度,而你的情况不会反映出来,因此错误。

'1,2,3,4,5,6,7,8,9,0'  this is not a legal character.

如果您只是想检查角色是否只是字母,请在切换开始前使用Charcter#isDigit(char)Charcter#isLetter,如下面的代码所示:

char ch=  (Character.toUpperCase(letter);
if(!Character.isDigit(ch)) {
    switch(Character.toUpperCase(letter))
     {
       case 'A':
            {
                Dot();
                Dash();
                Red();
            }
            break;
        }
     }
else {
       System.out.println("no numbers please")
}

答案 1 :(得分:2)

使用案例没有更简单的方法,那么?:

if ('0' <= letter && letter <= '9')
  System.out.println('No number input please!');

答案 2 :(得分:1)

不,这种情况下的Java并不像C#那样聪明。你需要为此写多行。如果要比较字符串,则需要使用if语句。还记得使用此代码进行比较:

if("search".equals(string2)) {...}

您无法通过==进行比较,这只会比较内存地址。另请注意,我在静态字符串上使用等号,而不是在变量string2上使用等号,因为如果string2为空,则代码会中断。

答案 3 :(得分:1)

  

如果我必须手动输入所有数字,是不是真的很长?

  

使用switch语句有更短的方法吗?

没有

考虑使用if语句......

答案 4 :(得分:0)

我希望这更能启发你。

请注意,您的表达式会将输出生成为A , B, C, D, E, F, G, H, I, ...till Z。并且你想为它们执行相同的方法/功能。

然后,您可以检查字符的ascii值并修改代码以使用iffor循环,或者使用程序中提到的switch以下示例程序。

使用代码来了解更多信息。

public class SwitchClass 
{   

public void method1()
{
        System.out.println("Menthod 1");
}

public void method2()
{
        System.out.println("Menthod 2");
}

public void method3()
{
        System.out.println("Menthod 3");
}   

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    SwitchClass sw = new SwitchClass();
    System.out.println("Enter the String:");
    String input = in.next();

    for(int i = 0; i<input.length(); i++)
    {

        switch(Character.toUpperCase(input.charAt(i)))
        {

            case 'A':
            case 'B':
            case 'C':
            case 'U':
                    System.out.println(Character.toUppercase(input.charAt(i))+" Case calling");
                    sw.method1();
                    sw.method2();
                    sw.method3();
                    break;

            default:
                    System.out.println("No number input please!");
                    break;
        }
    }       
}
}