Java Switch语句:无效的字符常量

Java Switch语句:无效的字符常量,java,switch-statement,Java,Switch Statement,我正在尝试创建一个switch语句,它将月份作为整数输入,并基于该整数,输出月份名称。由于某种原因,我不知道,案例“10”给了我一条无效的字符常量错误消息。有人知道为什么会发生这种情况,以及我如何解决这个问题吗?谢谢,代码如下: switch (month) { case '1': System.out.println("January"); break; case '2': System.out.println("February"); break;

我正在尝试创建一个switch语句,它将月份作为整数输入,并基于该整数,输出月份名称。由于某种原因,我不知道,
案例“10”
给了我一条无效的字符常量错误消息。有人知道为什么会发生这种情况,以及我如何解决这个问题吗?谢谢,代码如下:

    switch (month) {
    case '1': System.out.println("January");
    break;
    case '2': System.out.println("February");
    break;
    case '3': System.out.println("March");
    break;
    case '4': System.out.println("April");
    break;
    case '5': System.out.println("May");
    break;
    case '6': System.out.println("June");
    break;
    case '7': System.out.println("July");
    break;
    case '8': System.out.println("August");
    break;
    case '9': System.out.println("September");
    break;
    case '10': System.out.println("October");
    break;
    case '11': System.out.println("November");
    break;
    case '12': System.out.println("December");
    break;
    }
回答后:

    switch (month) {
    case "1": System.out.println("January");
    break;
    case "2": System.out.println("February");
    break;
    case "3": System.out.println("March");
    break;
    case "4": System.out.println("April");
    break;
    case "5": System.out.println("May");
    break;
    case "6": System.out.println("June");
    break;
    case "7": System.out.println("July");
    break;
    case "8": System.out.println("August");
    break;
    case "9": System.out.println("September");
    break;
    case "10": System.out.println("October");
    break;
    case "11": System.out.println("November");
    break;
    case "12": System.out.println("December");
    break;
    }
在获得更多答案后:

    switch (month) {
    case 1: System.out.println("January");
    break;
    case 2: System.out.println("February");
    break;
    case 3: System.out.println("March");
    break;
    case 4: System.out.println("April");
    break;
    case 5: System.out.println("May");
    break;
    case 6: System.out.println("June");
    break;
    case 7: System.out.println("July");
    break;
    case 8: System.out.println("August");
    break;
    case 9: System.out.println("September");
    break;
    case 10: System.out.println("October");
    break;
    case 11: System.out.println("November");
    break;
    case 12: System.out.println("December");
    break;
    }

在Java中,“表示字符,表示字符串
10在Java中不是一个字符,而是两个字符,因此不能将其放在那里

在Java 7中,您可以切换字符串,因此您必须将所有的“to”和
month
更改为如下字符串:

switch(month) {
    case "1": // stuff
    /* rest */
}
或者完全删除``并打开int:

switch(month) {
    case 1: // stuff
    /* rest */
}

'10'
有两个字符,即
'1'
'0'

为什么不使用
int
而不是
char
作为
switch
语句变量

int month = // ... however you get your month
switch(month) {
    case 1: // ...
    case 2: // ...
    case 3: // ...
    // ...
}

正如其他人所说,“10”有两个字符。为什么不改用整数:

 int month;
    switch(month){
    case 1:

    break;
    .
    .
    .
    }
从java 1.7开始,
switch
语句中也允许使用字符串,因此您还可以编写:

字符串月份=//i/p

switch(month){
case "1" :

break;
.
.
.
.
.
}

9后面有2个字符

e.g. 10, 11, 12
所以不能把它看作一个单独的字符。这就是为什么会出现错误

如果您使用的是Java版本1.7或更高版本,则可以使用字符串而不是字符。但我认为最好的方法是将month变量转换为int,并使用int大小写

//first cast month to a int
switch (month) {
    case 1: System.out.println("January");
         break;
    case 2: System.out.println("February");
         break;
    ......
    case 10: System.out.println("October");
         break;
    case 11: System.out.println("November");
         break;
    case 12: System.out.println("December");
         break;
}

若您将月份设为整数,那个么删除单引号,它就会工作
否则将月份设为字符串,它将起作用。

10
不是字符。这显然是两个字符。在执行
开关
/
大小写
之前,将字符转换为
int
。在您的大小写中完全不需要使用字符串。您只需要12个整数,所以只需使用整数:)我决定将月份设置为字符串,并使用双引号“”。谢谢大家@好的。现在发布更改