java switch 语句
突然傻了。看看下面代码;publicclassTest7{publicstaticvoidmain(String[]args){inti=5;switch(i){case...
突然傻了。
看看下面代码;
public class Test7 {
public static void main(String[] args)
{
int i=5;
switch(i)
{
case 1:
System.out.println("one");
case 10:
System.out.println("ten");
case 5:
System.out.println("five");
case 3:
System.out.println("three");
default:
System.out.println("other");
}
}
}
为什么结果是:
five
three
other
而没有one和ten呢? 展开
看看下面代码;
public class Test7 {
public static void main(String[] args)
{
int i=5;
switch(i)
{
case 1:
System.out.println("one");
case 10:
System.out.println("ten");
case 5:
System.out.println("five");
case 3:
System.out.println("three");
default:
System.out.println("other");
}
}
}
为什么结果是:
five
three
other
而没有one和ten呢? 展开
5个回答
展开全部
switch(表达式)
{
case 常量表达式1:语句1;
....
case 常量表达式2:语句2;
default:语句;
}
switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。
在你所给的代码中,由于i等于5,和前面的两个case都不匹配,所以结果中并没有one和ten的。而第三个case中的5就和switch中i的值匹配,因此就会打印出five的,由于没有遇到break所以就会顺序执行很面的代码,打印出three和other
{
case 常量表达式1:语句1;
....
case 常量表达式2:语句2;
default:语句;
}
switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。
在你所给的代码中,由于i等于5,和前面的两个case都不匹配,所以结果中并没有one和ten的。而第三个case中的5就和switch中i的值匹配,因此就会打印出five的,由于没有遇到break所以就会顺序执行很面的代码,打印出three和other
展开全部
你这里switch(i) ,你又给i的初始值为5,即case到5之后,执行:System.out.println("five");
在之后你又没有break,main方法就会继续执行,输出下面的两个。
看来你对switch...case语句还没弄清楚,你还得多看下一些关于switch...case 的例子,仔细琢磨下,
这有个例子,你自己看下吧:
import javax.swing.JOptionPane;
public class DayOut {
static int year;
static int month;
static int days=0;
public int day(){
String s1=JOptionPane.showInputDialog("请输入一个年份:");
year=Integer.parseInt(s1);
String s2=JOptionPane.showInputDialog("请输入一个月份:");
month=Integer.parseInt(s2);
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 4:
case 6:
case 9:
case 11:
days=30;
break;
case 2:
if(year%4==0&&year%100!=0||year%100==0){
days=29;
}else{
days=28;
}
break;
}
return days;
}
public static void main(String[] args){
DayOut D=new DayOut();
D.day();
JOptionPane.showMessageDialog(null,year+"年"+month+"月有"+days+"天.");
}
}
在之后你又没有break,main方法就会继续执行,输出下面的两个。
看来你对switch...case语句还没弄清楚,你还得多看下一些关于switch...case 的例子,仔细琢磨下,
这有个例子,你自己看下吧:
import javax.swing.JOptionPane;
public class DayOut {
static int year;
static int month;
static int days=0;
public int day(){
String s1=JOptionPane.showInputDialog("请输入一个年份:");
year=Integer.parseInt(s1);
String s2=JOptionPane.showInputDialog("请输入一个月份:");
month=Integer.parseInt(s2);
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 4:
case 6:
case 9:
case 11:
days=30;
break;
case 2:
if(year%4==0&&year%100!=0||year%100==0){
days=29;
}else{
days=28;
}
break;
}
return days;
}
public static void main(String[] args){
DayOut D=new DayOut();
D.day();
JOptionPane.showMessageDialog(null,year+"年"+month+"月有"+days+"天.");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把case 5:
System.out.println("five");放在最前面它就全部输出了。放在最后面就只输出five了。取决于输出语句后面有没有break。如果改为case 5:
System.out.println("five");break;那么就只输出five,没有break,不会退出switch方法,会继续往下执行,直到结束。LZ查查switch的用法便明白。
System.out.println("five");放在最前面它就全部输出了。放在最后面就只输出five了。取决于输出语句后面有没有break。如果改为case 5:
System.out.println("five");break;那么就只输出five,没有break,不会退出switch方法,会继续往下执行,直到结束。LZ查查switch的用法便明白。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
switch( val){
case :v1 {...break;}
case :v2 {...break;}
...
default :break;
}
到jdk1.7后,val可以使用string了。
case :v1 {...break;}
case :v2 {...break;}
...
default :break;
}
到jdk1.7后,val可以使用string了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i是几 他就按顺序找case,找到之后便执行,所以没有one ten。因为你每个case后面没有break,所以找到case 5之后继续执行后面的case 3、default。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询