class ForForDemo
{
public static void main(String[] args)
{
int x=0;
if (x>0) x=1;
switch (x)
{
case 1:System.out.println(1);
case 0:System.out.println(0);
case 2:System.out.println(2);
break;
case 3:System.out.println(3);
default:System.out.println(4);
break;
//输出结果是0
2
// 第二个为什么是2啊,if(x>0)x=1是怎么理解的啊?
// 求指点。。。
}作者: 王得新 时间: 2012-9-27 08:30
class ForForDemo
{
public static void main(String[] args)
{
int x=0;
if (x>0) x=1;
switch (x)
{
case 1:System.out.println(1);
case 0:System.out.println(0);
break;//这里少了break,switch()判断x是0后就执行case 0:了,但是你没有加break,所以直接执行case 2,但是case 2有break,所以输出2后就跳出了,所以结果是 0 2
case 2:System.out.println(2);
break;
case 3:System.out.println(3);
default:System.out.println(4);
break;
//输出结果是0
2
}
作者: 孔肖 时间: 2012-9-27 08:57
这里首先你要弄清switch的结束标记什么?
switch语句的结束标记是当执行到break或者switch语句末尾时,执行就结束。
楼上对你的疑问已经说明白了。这里再举一个列子来方便你理解。
public class Test
{
public static void main(String[] args)
{
int x = 2;
switch(x)
{
case 1:System.out.print("1");
case 2:System.out.print("2");
case 3:System.out.print("3");
case 4:System.out.print("4");
default:System.out.print("no");
}
}
}
这里语句中就没有break,显然这里switch执行的结束标记就是switch语句结束,所以运行的结果为 2 3 4 no作者: 夏天 时间: 2012-9-27 09:01
int x = 0;
if (x > 0) {
x = 1;//这边你补全大括号,就看到 如果x>0,就把1给x。
}
switch (x) {//而这边x还是0
case 1:
System.out.println(1);
case 0://从这开始满足,遇到break,才会退出switch语句,所以会是0和2
System.out.println(0);
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
default:
System.out.println(4);
break;
}作者: 明光照 时间: 2012-9-27 09:18
class ForForDemo
{
public static void main(String[] args)
{
int x=0;
if (x>0) x=1;
switch (x)
{
case 1:System.out.println(1);
case 0:System.out.println(0);
case 2:System.out.println(2);
break;
case 3:System.out.println(3);
default:System.out.println(4);
break;
}
class ForForDemo
{
public static void main(String[] args)
{
int x=0;//你可以这改成>0的值,那么运行结果就是:1 0 2
if (x>0)
x=1;
switch (x)
{
case 1:System.out.println(1);
case 0:System.out.println(0);//因为case:0后面没有break语句,所以程序还会向下执行,遇到break语句才会结束
break;
case 2:System.out.println(2);
break;
case 3:System.out.println(3);
default:System.out.println(4);
break;
}