-1

只是为了澄清这是硬件。

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

        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' 

日食 说

invalid character constant 

如果我必须手动输入所有数字,那不是很冗长吗?

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

即使

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

它行不通。

有没有更短的方法可以使用 switch 语句来做到这一点?

谢谢!

4

5 回答 5

4

这是因为 Case 表达式应该是java 7int-compatible literal中的 an或 a 。String

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.

如果您只想检查字符是否只是 alpha,请在开关开始之前使用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")
}
于 2013-01-30T18:29:25.540 回答
2

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

if ('0' <= letter && letter <= '9')
  System.out.println('No number input please!');
于 2013-01-30T18:30:38.333 回答
1

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

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

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

于 2013-01-30T18:27:16.333 回答
1

如果我必须手动输入所有数字,那不是很冗长吗?

是的。

有没有更短的方法可以使用 switch 语句来做到这一点?

不。

考虑一个if声明...

于 2013-01-30T18:27:18.507 回答
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;
        }
    }       
}
}
于 2013-04-23T05:40:01.747 回答