import java.util.Scanner;
public class ddd {
public static void main(String args[]){
System.out.println("输入:");
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
switch(a){
case '1':
System.out.println("Hello World!");
break;
case '2':
System.out.println("I Love Java!");
break;
case '3':
System.out.println("Java is Easy!");
break;
default :
System.out.println("你的输入不合法!") ;
break;
}
}
}
这个哪里错了 为什么输什么都是 你的输入不合法?
é¦å ä»åçä¸æ¥éè¿°è¿ä¸ªé®é¢:
switch(表达å¼)
{
case 常é表达å¼1:è¯å¥1;
....
case 常é表达å¼2:è¯å¥2;
default:è¯å¥;
}
1.defaultå°±æ¯å¦æ没æ符åçcaseå°±æ§è¡å®,default并ä¸æ¯å¿ é¡»ç.
2.caseåçè¯å¥å¯ä»¥ä¸ç¨å¤§æ¬å·.
3.switchè¯å¥çå¤ææ¡ä»¶å¯ä»¥æ¥åint,byte,char,short,ä¸è½æ¥åå ¶ä»ç±»å.
4.ä¸æ¦caseå¹é ,å°±ä¼é¡ºåºæ§è¡åé¢çç¨åºä»£ç ,èä¸ç®¡åé¢çcaseæ¯å¦å¹é ,ç´å°éè§break,å©ç¨è¿ä¸ç¹æ§å¯ä»¥è®©å¥½å 个caseæ§è¡ç»ä¸è¯å¥.
åçå½åç,ä¸é¢æ¯å 个容ææ··æ·çä¾å.
1.æ åå(caseåé¢é½æbreakè¯å¥)
int i=3;
switch(i)
{
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
default:
System.out.println("default");
break;
}
è¾åºç»æ:
3
2.ç¹æ®å1(ä¸æ¯å®å ¨æbreakè¯å¥,å¯ä»¥å®æä¸äºç¹æ®åºç¨)
int year=2005;
int month=3;
int day;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 2:
day=28;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
}
è¿é day=31;
3.ç¹æ®å2(defaultçä½ç½®)
int i=1;
switch(i)
{
case 1:
System.out.println(1);
default:
System.out.println("default");
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
}
è¾åºç»æ:
1
default
2
case '1':
System.out.println("Hello World!");
break;
case '2':
System.out.println("I Love Java!");
break;
case '3':
System.out.println("Java is Easy!");
break;
default :
System.out.println("你的输入不合法!") ;
break;
}
语法没有错误,逻辑错在你输入的是int类型,而case后面跟的事char类型,他会将char类型转换成对象的int类型。所以不管你输入1,2,3都是不匹配的。追问
case 能在一个范围内case吗? 比如说6-10?
本回答被网友采纳原因就是你把 1 用 " "给整起来了。
请注意::"1"并不等于1.
所以应该写成:
switch(a){
case 1:
System.out.println("Hello World!");
break;
case 2:
System.out.println("I Love Java!");
break;
case 3:
System.out.println("Java is Easy!");
break;
default :
System.out.println("你的输入不合法!") ;
break;
}追问
case 能在一个范围内case吗? 比如说6-10?
追答可以这样用:
switch(a){
case 1:
System.out.println("Hello World!");
break;
case 2:
System.out.println("I Love Java!");
break;
case 3:
System.out.println("Java is Easy!");
break;
case 4:
case 5:
case 6:这儿可以做点什么;break;
default :
System.out.println("你的输入不合法!") ;
break;
}
这里 int a = scanner.nextInt(); a变量是整型
你在case的使用使用了字符型的常量'1'、'2'和'3' 这三个值会被自动转换成整型值49,50和51
所以当你输入1、2、3的时候,程序会进行到default
你输入一下49、50或51再看一下。
'1'属于char类型,但是 你的a是int类型
所以无论输入1,2,3那个都不会走case而直接走default
在JAVA里面char和int是可以相互转换的 所以这样写switch也不会报错