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呢?
展开
 我来答
邰鸥dZ
推荐于2016-03-13 · 超过17用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:42.8万
展开全部
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
百度网友744267234
2010-07-28 · TA获得超过135个赞
知道答主
回答量:113
采纳率:0%
帮助的人:0
展开全部
你这里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+"天.");

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
in_the_blues
2010-07-28 · TA获得超过113个赞
知道答主
回答量:124
采纳率:0%
帮助的人:84.1万
展开全部
你把case 5:
System.out.println("five");放在最前面它就全部输出了。放在最后面就只输出five了。取决于输出语句后面有没有break。如果改为case 5:
System.out.println("five");break;那么就只输出five,没有break,不会退出switch方法,会继续往下执行,直到结束。LZ查查switch的用法便明白。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zfx8827
推荐于2018-03-23 · 超过17用户采纳过TA的回答
知道答主
回答量:150
采纳率:50%
帮助的人:40.9万
展开全部
switch( val){
case :v1 {...break;}
case :v2 {...break;}
...
default :break;
}

到jdk1.7后,val可以使用string了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
好猫666
2010-07-28 · TA获得超过216个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:180万
展开全部
i是几 他就按顺序找case,找到之后便执行,所以没有one ten。因为你每个case后面没有break,所以找到case 5之后继续执行后面的case 3、default。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式