Java Switch语句:无效的字符常量
我正在尝试创建一个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;
案例“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个整数,所以只需使用整数:)我决定将月份设置为字符串,并使用双引号“”。谢谢大家@好的。现在发布更改