我试图创建一个将月份作为整数的switch语句,并且基于该整数,我想输出一个月份名称。由于某些我不知道的原因,case '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;
}
答案 0 :(得分:4)
'10'
有两个字符,即'1'
和'0'
为什么不为int
语句变量使用char
代替switch
...
int month = // ... however you get your month
switch(month) {
case 1: // ...
case 2: // ...
case 3: // ...
// ...
}
答案 1 :(得分:3)
在Java中``表示一个字符,而"" 表示一个字符串。 10
不是Java中的字符,而是两个字符,因此您无法将其放在那里。
在Java 7中,您可以对字符串进行切换,这样您就必须将所有``更改为""和month
这样的字符串:
switch(month) {
case "1": // stuff
/* rest */
}
或者完全放弃``并打开int:
switch(month) {
case 1: // stuff
/* rest */
}
答案 2 :(得分:2)
正如其他人所说'10'有2个字符。为什么不使用整数:
int month;
switch(month){
case 1:
break;
.
.
.
}
来自java 1.7 Strings
语句中也允许使用switch
,所以你也可以写:
String month = // i / p
switch(month){
case "1" :
break;
.
.
.
.
.
}
答案 3 :(得分:2)
9
之后你有2个字符e.g. 10, 11, 12
因此,不能将其视为单个字符。这就是你收到错误的原因。
如果您使用的是Java 1.7或更高版本,则可以使用string而不是char。但我认为最好的方法是将月变量转换为int并使用int case
//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;
}
答案 4 :(得分:1)
如果您将月份作为整数,则删除单引号,它将起作用 否则将月份作为字符串,它将起作用。